在telerik radgridview ui winform中导出到excel时,隐藏每个父行子行的指定列



我的winform应用程序中有一个分层的telerik gridview。在这个gridview主模板中,我有一些行,每个行都有子行,并且在父行的所有子行的某些列中为null。

我写了一段代码,只允许展开一个父行,当展开该父行时,使用radGridView1_ChildViewExpanded事件处理程序只显示至少在一个子行中有值的列,并隐藏该父行的子行都为null的列。

我的问题是当我想导出这个层次telerik gridview到excel文件。为了达到我所描述的目的,我应该在导出时做什么?这意味着只导出在其子行中至少有一个值的列,而不导出每个父行的其他列。

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

最新更新