C# 在telerik radgridview ui winform中导出到excel时隐藏每个父行和子行的指定列
我在我的C# 在telerik radgridview ui winform中导出到excel时隐藏每个父行和子行的指定列,c#,winforms,telerik,export-to-excel,radgridview,C#,Winforms,Telerik,Export To Excel,Radgridview,我在我的winform应用程序中有一个分层telerik gridview。 在这个gridview主模板中,我有一些行,每个行都有子行,并且对于父行的所有子行,在某些列中为空 我编写了一个代码,只允许扩展一个父行,并且在扩展该父行时,仅显示至少在一个子行中有值的列,并使用radGridView1\u ChildViewExpanded事件处理程序隐藏该父行的所有子行都为空的列 我的问题是当我想将这个分层telerik gridview导出到excel文件时。导出时应执行哪些操作以实现我所描述的
winform
应用程序中有一个分层telerik gridview
。
在这个gridview
主模板中,我有一些行,每个行都有子行,并且对于父行的所有子行,在某些列中为空
我编写了一个代码,只允许扩展一个父行,并且在扩展该父行时,仅显示至少在一个子行中有值的列,并使用radGridView1\u ChildViewExpanded
事件处理程序隐藏该父行的所有子行都为空的列
我的问题是当我想将这个分层
telerik gridview
导出到excel文件时。导出时应执行哪些操作以实现我所描述的,这意味着仅导出其子行中至少有一个值的列,而不导出每个父行的其他列。为此,可以使用GridViewSpreadExport的HiddenRowOption属性并将其设置为DonoExport。然后,要定义隐藏的行,请将其IsVisible属性设置为false
您可以在Telerik UI for WinForms文档中的以下文章中找到关于这一问题的更多信息:我使用了这段代码,它工作正常
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++;
}
}
}
我不会那样做。此事件经常被触发,并有其他用途-格式化单元格外观。因此,这将对应用程序的性能产生影响。
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++;
}
}
}