Studio for WPF: C1DataGrid 打印选择单元格范围

ComponentOne DataGrid for WPF 支持整个表格范围的打印。但并不灵活,往往一些用户需要打印部分表格区域而并非整体。本篇博客即将展示如何通过自定义方法实现区域打印功能。我们将通过以下步骤完成区域打印功能:创建一个临时过滤数据表,用于展示选择的数据。创建新增 C1DataGrid。 绑定临时数据表到新增的 C1DataGrid 控件。 打印新增的 C1DataGrid

发布于 2013/12/20 00:00

ComponentOne Enterprise

ComponentOne DataGrid for WPF 支持整个表格范围的打印。但并不灵活,往往一些用户需要打印部分表格区域而并非整体。本篇博客即将展示如何通过自定义方法实现区域打印功能。

我们将通过以下步骤完成区域打印功能:

  • 创建一个临时过滤数据表,用于展示选择的数据。
  • 创建新增 C1DataGrid。
  • 绑定临时数据表到新增的 C1DataGrid 控件。
  • 打印新增的 C1DataGrid

基本设置

开始实现功能之前,我们需要绑定数据和设置 SelectionMode 属性。绑定数据源到表格控件,你可以参考帮助文档 http://helpcentral.componentone.com/nethelp/c1datagridwpf/#!Documents/step2of3bindingthegr.htm" target="_blank">点击进入。通过

Step I) 创建过滤数据表

  1: private DataTable GetTableOfSelectedRange(C1.WPF.DataGrid.C1DataGrid view)
  2: {
  3:     // create a table containing the selection range
  4:     DataTable resultTable = new DataTable();
  5:     DataTable sourceTable = null;
  6:   
  7:     // create lists for selected row & column ranges
  8:     var rowSel = c1DataGrid1.Selection.SelectedRows.ToList();
  9:     var colSel = c1DataGrid1.Selection.SelectedColumns.ToList();
 10:   
 11:     if (view.ItemsSource is DataView)
 12:         sourceTable = ((DataView)view.ItemsSource).Table;
 13:     if (sourceTable != null)
 14:     {
 15:         for (int colHandle = 0; colHandle < colSel.Count; colHandle++)
 16:         {
 17:             resultTable.Columns.Add(new DataColumn(colSel[colHandle].Name));
 18:         }
 19:             for (int rowHandle = 0; rowHandle < rowSel.Count; rowHandle++)
 20:             {
 21:                 ArrayList values = new ArrayList();
 22:                 for (int colHandle = 0; colHandle < colSel.Count; colHandle++)
 23:                 {
 24:                     values.Add(colSel[colHandle].GetCellValue(rowSel[rowHandle]));
 25:                 }
 26:                     resultTable.Rows.Add(values.ToArray());
 27:                 }
 28:         resultTable.AcceptChanges();
 29:     }
 30:     return resultTable;
 31: }

 

Step II) 创建新的 C1DataGrid 控件

  1: // Create a CloneGrid
  2: C1.WPF.DataGrid.C1DataGrid clonedGrid = new C1DataGrid();
  3:   
  4: // Add it to the Visual Tree
  5: grid1.Children.Add(clonedGrid);

 

Step III) 绑定过滤数据表到新增的 C1DataGrid 控件

  1: // Assign the cloneTable as the Itemsource for the cloneGrid
  2: DataTable clonedTable = GetTableOfSelectedRange(c1DataGrid1);
  3: clonedGrid.ItemsSource = clonedTable.AsDataView();

 

 

Step IV) 打印单元格范围

  1: //Print the Grid
  2: clonedGrid.Print("test");

 

打印结果效果图如下:

image

Demo 下载:

VS2010 + Framework4.0 + C# 点击下载

VS2010 + Framework4.0 + VB.NET 点击下载

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态