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文件时。导出时应执行哪些操作以实现我所描述的,这意味着仅导出其子行中至少有一个值的列,而不导出每个父行的其他列。

为此,可以使用GridViewSpreadExportHiddenRowOption属性并将其设置为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++;
            }
        }
    }