在telerik radgridview ui winform

时间:2016-08-02 06:32:17

标签: c# winforms telerik export-to-excel radgridview

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

我编写了一个代码,只允许展开一个父行,扩展该父行时只显示至少在一个子行中具有值的列,并隐藏其子行对于该父行的所有列都为空的列radGridView1_ChildViewExpanded事件处理程序。

我的问题是当我想将此分层telerik gridview导出到Excel文件时。我应该如何在导出中实现我所描述的内容,这意味着只导出在其子行中至少有一个值而不为每个父行导出其他值的列。

2 个答案:

答案 0 :(得分:1)

为此,您可以使用 GridViewSpreadExport HiddenRowOption 属性并将其设置为 DoNotExport 。然后,要定义隐藏哪些行,请将其 IsVisible 属性设置为 false

radGridView1.Rows[0].IsVisible = false;

有关此问题的更多信息,请参阅Telerik UI for WinForms文档的以下文章:Export to Excel

答案 1 :(得分:1)

我使用了这段代码并且有效

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++;
            }
        }
    }