回复 1楼小格的帖子
Generate方法需要在执行之前准备好数据和设置页面。
建议你使用StartDoc和EndDoc来完成需求。
在StartDoc方法调用后,你可以在这里地方准备数据,以及对每次打完一页,对新页进行更改。
在所有结束后使用EndDoc方法。
我写了一段代码给你做参考:
- #region StartDoc-EndDoc
- c1PrintDocument1.AllowNonReflowableDocs = true;
- c1PrintDocument1.StartDoc();
- //First table
- rt3.Style.GridLines.All = new C1.C1Preview.LineDef(Color.DarkGray);
- const int r3 = 3;
- const int c3 = 3;
- for (int row = 0; row < r3; ++row)
- {
- for (int col = 0; col < c3; ++col)
- {
- C1.C1Preview.RenderText celltext = new C1.C1Preview.RenderText();
- celltext.Text = string.Format("Cell ({0}, {1})", row, col);
- rt3.Cells[row, col].RenderObject = celltext;
- }
- }
- c1PrintDocument1.RenderBlock(rt3);
- // Insert a new page by calling the NewPage method
- Unit u1=new Unit(1000, UnitTypeEnum.Pixel);
- this.c1PrintDocument1.PageLayout.PageSettings.TopMargin = u1;
- c1PrintDocument1.NewPage();
- //
- //Second table
- rt4.Style.GridLines.All = new C1.C1Preview.LineDef(Color.DarkGray);
- const int r4 = 2;
- const int c4 = 2;
- for (int row = 0; row < r4; ++row)
- {
- for (int col = 0; col < c4; ++col)
- {
- C1.C1Preview.RenderText celltext = new C1.C1Preview.RenderText();
- celltext.Text = string.Format("Cell ({0}, {1})", row, col);
- rt4.Cells[row, col].RenderObject = celltext;
- }
- }
- c1PrintDocument1.RenderBlock(rt4);
- c1PrintDocument1.EndDoc();
- c1PrintPreviewControl1.Document = c1PrintDocument1;
- #endregion
复制代码 |