使用DevExpress xtrapprint在GridControl和两个关联的gridview中打印数据

本文关键字:关联 两个 gridview 数据 打印 xtrapprint DevExpress GridControl 使用 | 更新日期: 2023-09-27 18:11:16

我目前使用VB在Visual Studio 2010中编程。Net和DevExpress V10.2 Winforms。我目前有一个DevExpress GridControl,包含两个DevExpress gridview。所以这里有主视图和子网格(类似于DevExpress的主-细节网格演示——使用WinForms的例子和使用ASPxGridView的更好的视图)。当前网格的数据被提取到DataSet:

 If myDataSet.Tables.Count > 0 Then
       myDataSet.Relations.Add("Details", myDataSet.Tables(0).Columns("id"),  myDataSet.Tables(1).Columns("id"))
       myGridControl.DataSource = myDataSet.Tables(0)
       myGridControl.LevelTree.Nodes.Add("Details", mySecondGridView)
 End If

我想做的是生成一个报告,显示用户当前在gridControl中看到的内容。例如,如果用户过滤或排序数据或更改列大小或可见性,这将反映在他们生成的报告中。

为了生成报告,我在设计器中添加了PrintingSystem,然后在PrintingSystem Links集合中添加了PrintableComponentList。组件被设置为gridcontrol。在我的代码中,当Print Grid按钮被按下时,我调用:

PrintableComponentLink1.CreateDocument()
PrintableComponentLink1.ShowPreview()

打印一个看起来不错的报告。列被正确表示,如果数据被分组,报告将反映这一点。我遇到的问题是它没有显示子网格,第二个网格视图,即使我在预览报告之前展开全部或部分网格。我甚至决定忽略打印系统,而是尝试直接从gridControl中打印:

myGridControl.ShowPrintPreview() 

但这也显示了第一个gridView而不是第二个gridView。

我应该如何展示用户当前在一个GridControl中看到的GridViews ?

使用DevExpress xtrapprint在GridControl和两个关联的gridview中打印数据

试试下面的代码。

CompositeLink composLink = new CompositeLink(new PrintingSystem());
PrintableComponentLink pcLink1 = new PrintableComponentLink();
PrintableComponentLink pcLink2 = new PrintableComponentLink();
pcLink1.Component = this.gridControl1;
pcLink2.Component = this.gridControl2;
composLink.Links.Add(pcLink1);
composLink.Links.Add(pcLink2);
composLink.ShowPreview();

要查看第二个GridView,请进入GridControl的设计器。在左边的选项中(在Main和Appearance下)选择打印选项。在打印机设置下,我勾选了选项。细节和行为。所有细节。