我试图'打印'我的datagrid / datatable的内容。 我读了一些关于将DATAGRID转换为TABLE到FLOWDOCUMENT的内容,但我找不到源代码如何去做。
我只需要一些关于如何将datagrid / dataTable转换为Table的示例代码。
然后我将应用此解决方案:Printing a WPF FlowDocument
任何想法?
感谢并抱歉我的noob问题。
答案 0 :(得分:2)
就我的研究发表时,我发现将UI元素转换为页面是一件错误的事情。打印与创建UI有很大不同,并且纸张上没有卷轴或可拖动的列:)因此您的打印数据将与表单上显示的数据不同。
就DataTable
而言,这只是数据的表示,因此您可以轻松生成一个可以打印的表,它已经有行和列,因此应该直接开始:(注意代码未经过测试)
System.Data.DataTable dataTable = GetDataTable();
var table = new Table();
var rowGroup = new TableRowGroup();
table.RowGroups.Add(rowGroup);
var header = new TableRow();
rowGroup.Rows.Add(header);
foreach (DataColumn column in dataTable.Columns)
{
var tableColumn = new TableColumn();
//configure width and such
table.Columns.Add(tableColumn);
var cell = new TableCell(new Paragraph(new Run("column Header")));
header.Cells.Add(cell);
}
foreach (DataRow row in dataTable.Rows)
{
var tableRow = new TableRow();
rowGroup.Rows.Add(tableRow);
foreach (DataColumn column in dataTable.Columns)
{
var value = row[column].ToString();//mayby some formatting is in order
var cell = new TableCell(new Paragraph(new Run(value)));
tableRow.Cells.Add(cell);
}
}
//and print your table
如果你问我,我发现这个API有点冗长,但对于具有正确理解的复杂文档,它非常强大。