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 点击下载

ComponentOne Enterprise | 下载试用

ComponentOne 是一套专注于企业 .NET开发、支持 .NET Core 平台,并完美集成于 Visual Studio 的第三方控件集,包含 300 多种 .NET开发控件,提供表格数据管理、数据可视化、报表和文档、日程安排、输入和编辑、导航和布局、系统提升工具等七大功能,被誉为“.NET开发的‘瑞士军刀’”。

ComponentOne 为您提供专业的产品咨询服务,并由技术支持工程师为您1对1解答。>> 发帖提问

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

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

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