我正在使用 LocalReport.Render 技术从 Windows 窗体应用程序打印报告,如下所述:http://msdn.microsoft.com/en-us/library/ms252172.aspx
它有效,但只打印第一页。我没有在报告页面上使用任何页眉或页脚,只使用正文。没有子关系,没有子报告。只是一个非常简单的数据对象列表。
我正在做这样的事情来将数据源加载到报告中:
List<mysimpledataobject> MyData = new List<mysimpledataobject>();
... add 10 items to the list ...
report.DataSources.Add(new ReportDataSource("Sales", MyData));
仅呈现第一页。我想也许所有页面都被渲染到流列表中,也许只有第一页实际上被发送到打印机,但是当我调试并查看流列表时,我看到的只是一个项目。流应该在每个页面的流列表中包含一项。
部分渲染代码如下所示:
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams)
stream.Position = 0;
m_streams 列表中只有 1 个项目,因此只打印 1 页。
我还尝试将 DataTable 和业务对象的 Array 作为数据源传递,但这也不起作用。
任何想法,将不胜感激。谢谢。
最佳答案
如果要呈现报告的所有页面,则需要将 0 设置为 StartPage
中的 DeviceInfo
设置。StartPage
和 EndPage
的默认值是 1 。这就是为什么你总是只渲染第一页。
例子:
string mime, encoding, fileNameExtension;
string[] streams;
Warning[] warnings;
byte[] bytes = report.Render("IMAGE", @"<DeviceInfo><OutputFormat>TIFF</OutputFormat><StartPage>0</StartPage></DeviceInfo>", out mime, out encoding, out fileNameExtension, out streams, out warnings);
关于c# - 只打印第一页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11105791/