← 返回所有博客文章

使用 C1Report 时,在报表插入新页是很常见的操作,经常有用户会疑惑使用 StartDoc-EndDoc 方法还是Generate 方法。

C1PrintDocument 文档可以使用 StartDoc-EndDoc 方法或 Generate 生成文档。两者生成文档的最终结果虽然相同,但是在使用方法上是不同的,在本篇文章中讲阐述这两者使用方法的区别。

StartDoc()-EndDoc() 方法

StartDoc 方法用于开始文档的生成动作,EndDoc 方法用于结束文档的生成动作。使用 RenderBlock(), RenderDirect() 和 RenderInline() 方法向文档流中添加文档元素时需要使用 StartDoc-EndDoc 。示例代码如下:

c1PrintDocument1.RenderBlock(renderTable1);

 

Generate() 方法

当文档元素直接添加到文档的Body属性时,可以使用 Generate 方法生成。例如:

this.c1PrintDocument1.Body.Children.Add(new C1.C1Preview.RenderText("Hello, World!"));

 

两者的功能相同,但是不能同时使用。如果调用了 StartDoc 方法, 文档则开始生成,不能在StartDoc和EndDoc 之间调用 Generate 方法。

如何使用以上方法插入新页?

如果使用 Generate() 方法,则需要设置渲染的文档元素BreakAfter属性为BreakEnum。例如:以下代码即在添加了RenderTable后插入了一个分页符。:

c1PrintDocument1..Body.Children.Add(renderTable1);
rt1.BreakAfter = BreakEnum.Page;
c1PrintDocument1.Body.Children.Add(renderTable2);
c1PrintDocument1.Generate();

 

当使用 StartDoc-EndDoc 方法,插入新页的方法如下:

c1PrintDocument1.RenderBlock(renderTable1);
c1PrintDocument1.NewPage();
c1PrintDocument1.RenderBlock(renderTable2);

 

image

更加详细的信息请下载Demo试用:

VS2010+Studio for WinForms