I have found and modified following code in order to export my dataGrid to a pdf document using iTextSharp class.
private void ExportToPdf(DataGrid grid)
{
PdfPTable table = new PdfPTable(grid.Columns.Count);
using (Document doc = new Document(iTextSharp.text.PageSize.A4))
{
using (PdfWriter writer = PdfWriter.GetInstance(doc, new System.IO.FileStream("Test.pdf", FileMode.Create)))
{
doc.Open();
for (int j = 0; j < grid.Columns.Count; j++)
{
table.AddCell(new Phrase(grid.Columns[j].Header.ToString()));
}
table.HeaderRows = 1;
IEnumerable itemsSource = grid.ItemsSource as IEnumerable;
if (itemsSource != null)
{
foreach (var item in itemsSource)
{
DataGridRow row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (row != null)
{
DataGridCellsPresenter presenter = FindVisualChild<DataGridCellsPresenter>(row);
for (int i = 0; i < grid.Columns.Count; ++i)
{
DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(i);
TextBlock txt = cell.Content as TextBlock;
if (txt != null)
{
table.AddCell(new Phrase(txt.Text));
}
}
}
}
doc.Add(table);
doc.Close();
}
}
}
}
The problem occurs in the following line:
DataGridCellsPresenter presenter = FindVisualChild<DataGridCellsPresenter>(row);
Visual Studio returns following error 'The name 'FindVisualChild' does not exist in the current context'. How do I add this parameter ?.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…