我的winform
应用程序中有一个分层的telerik gridview
。在这个gridview
主模板中,我有一些行,每个行都有子行,并且在父行的所有子行的某些列中为null。
我写了一段代码,只允许展开一个父行,当展开该父行时,使用radGridView1_ChildViewExpanded
事件处理程序只显示至少在一个子行中有值的列,并隐藏该父行的子行都为null的列。
我的问题是当我想导出这个层次telerik gridview
到excel文件。为了达到我所描述的目的,我应该在导出时做什么?这意味着只导出在其子行中至少有一个值的列,而不导出每个父行的其他列。
为此,您可以使用GridViewSpreadExport的HiddenRowOption属性,并将其设置为DoNotExport。然后,要定义隐藏的行,请将其IsVisible属性设置为false
radGridView1.Rows[0].IsVisible = false;
有关此问题的更多信息,请参阅Telerik UI for WinForms文档中的以下文章:导出到Excel
我使用了这个代码,它在中工作
void spreadExporter_CellFormatting(object sender, Telerik.WinControls.Export.CellFormattingEventArgs e)
{
if (e.GridRowInfoType == typeof(GridViewHierarchyRowInfo))
{
int i = 0;
foreach (GridViewColumn column in radGridView1.MasterTemplate.Templates[0].Columns)
{
if (i > 1)
{
int TotalNullRecords = (from row in e.GridCellInfo.RowInfo.ChildRows
where string.IsNullOrWhiteSpace(row.Cells[column.Name].Value.ToString())
select row).ToList().Count;
if (TotalNullRecords == e.GridCellInfo.RowInfo.ChildRows.Count)
{
radGridView1.MasterTemplate.Templates[0].Columns[column.Name].IsVisible = false;
}
else
radGridView1.MasterTemplate.Templates[0].Columns[column.Name].IsVisible = true;
}
i++;
}
}
}