DEVEXPRESS GridControl自定义分组组名

在使用DEV控件库中的gridcontrol时,有时候会用到它的分组功能,它提供了强大方便的分组功能,设置起来比较简单。后面会介绍自定义组名方法。

方法/步骤

  1. 选中GridControl,打开它的Designer的Columns界面。选择需要进行分组的Column,设置它的GroupIndex属性。(默认是-1,不进行分组。设置为0,就是第一层分组。如果有多列要进行分组,第2列设置为1,就是第二层分组了。以此类推)

    DEVEXPRESS GridControl自定义分组组名_第1张图片



  2. 设置完成后,就是如下界面了(我是按照每间房屋进行分组的,分组字段是房屋ID)。

  3. DEVEXPRESS GridControl自定义分组组名_第2张图片

  4. 下面就是设置分组组名,默认是显示该字段的列名。如果需要修改成自定义名称,可以在GridControl的CustomDrawGroupRow事件中进行处理(它是重新绘制分组信息的)。

    private void gvwDetails_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
           {
               GridGroupRowInfo GridGroupRowInfo = e.Info as GridGroupRowInfo;
               GridGroupRowInfo.GroupText = "Test";

        }

    DEVEXPRESS GridControl自定义分组组名_第3张图片

  5. 如果是需要进行更复杂的显示(例如我是需要显示楼盘,楼栋,房号字段的信息)。

    可以使用GetDataRowHandleByGroupRowHandle方法根据组的RowHandle得到该组第一条记录在数据集中的RowHandle,然后获取该组下面记录的楼盘,楼栋,房号的字段信息。

     private void gvwDetails_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
           {
               GridGroupRowInfo GridGroupRowInfo = e.Info as GridGroupRowInfo;
               GridView gridview = sender as GridView;
               int index = gridview.GetDataRowHandleByGroupRowHandle(e.RowHandle);

               GridGroupRowInfo.GroupText = gridview.GetRowCellValue(index, "ConstructionName").ToString()
                   + gvwDetails.GetRowCellValue(index, "BuildingName").ToString()
                   + gvwDetails.GetRowCellValue(index, "HouseName").ToString();
               
           }

    最后隐藏楼盘,楼栋,房号字段的显示。

    DEVEXPRESS GridControl自定义分组组名_第4张图片


  6. 之所以会这样处理,是因为分组RowHandle与数据RowHandle关系如下。

    DEVEXPRESS GridControl自定义分组组名_第5张图片

你可能感兴趣的:(C#,DevExpress,winform,devexpress,控件,c#)