在使用DEV控件庫中的gridcontrol時,有時候會用到它的分組功能,它提供了強大方便的分組功能,設置起來比較簡單。后面會介紹自定義組名方法。
方法/步驟
-
選中GridControl,打開它的Designer的Columns界面。選擇需要進行分組的Column,設置它的GroupIndex屬性。(默認是-1,不進行分組。設置為0,就是第一層分組。如果有多列要進行分組,第2列設置為1,就是第二層分組了。以此類推)
-
設置完成后,就是如下界面了(我是按照每間房屋進行分組的,分組字段是房屋ID)。
-
下面就是設置分組組名,默認是顯示該字段的列名。如果需要修改成自定義名稱,可以在GridControl的CustomDrawGroupRow事件中進行處理(它是重新繪制分組信息的)。
private void gvwDetails_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e)
{
GridGroupRowInfo GridGroupRowInfo = e.Info as GridGroupRowInfo;
GridGroupRowInfo.GroupText = "Test";}
-
如果是需要進行更復雜的顯示(例如我是需要顯示樓盤,樓棟,房號字段的信息)。
可以使用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();
}最后隱藏樓盤,樓棟,房號字段的顯示。
-
之所以會這樣處理,是因為分組RowHandle與數據RowHandle關系如下。
-