AspxGridView实现数据分组的前提条件:必须设置ASPxGridViewBehaviorSettings.AllowGroup=true
一、从服务器端实现数据分组1.使用GroupBy方法实现数据分组语法1:int GroupBy(GridViewColumn column);
语法2:int GroupBy(GridViewColumn column, int value);
其中参数value表示分组的层次,-1表示取消该栏位的分组。
调用GroupBy方法不会自动清除以前的分组规则,可以调用ClearSort方法或UnGroup方法清除。
下面示例演示了用一个栏位进行分组:
this.ASPxGridView1.ClearSort();//清空分组
string columnName = this.ddlGroupColumns.SelectedValue;
GridViewColumn col = this.ASPxGridView1.Columns[columnName];
this.ASPxGridView1.GroupBy(col);//分组
下面示例演示了用多个栏位分组:
this.ASPxGridView1.ClearSort();//清空分组
this.ASPxGridView1.GroupBy(this.ASPxGridView1.Columns[“Event”]);//分组
this.ASPxGridView1.GroupBy(this.ASPxGridView1.Columns[“Type”]);//分组
2.分组的展开与折叠(1)使用ExpandAll展开所有分组。
语法:void ExpandAll();
(2)使用ExpandRow展开指定分组行。
语法1:void ExpandRow(int visibleIndex);
语法2:void ExpandRow(int visibleIndex, bool recursive);
参数recursive设置是否启用递归展开分组。
(3)使用CollapseAll折叠所有分组。
语法:void CollapseAll();
(4)使用CollapseRow折叠指定分组行。
语法1:void CollapseRow(int visibleIndex);
语法2:void CollapseRow(int visibleIndex, bool recursive);
参数recursive设置是否启用递归折叠分组。
3.判断分组行是否展开使用IsRowExpanded方法。
语法:bool IsRowExpanded(int visibleIndex);
4.数据分组的相关设置(1)Setting.GroupFormat用来设置分组行的数据格式(可读写)。
默认是:{0}:{1}{2}。其中{0}表示分组栏位的标签(Caption属性),{1}表示分组栏位值,{2}表示汇总文本。{1}与{2}中间会自动显示括号。
只有在<GroupSummary >标签中定义了汇总方式才会在显示其汇总文本。
示例:
<GroupSummary >
<dxwgv:ASPxSummaryItem FieldName="OCCDatetime" SummaryType="Count" / >
</GroupSummary >
(2) Setting.ShowGroupedColumns用来设置是否显示已分组的栏位。默认为true。
(3) Setting.ShowGroupedButtons用来设置是否显示分组展开按钮(+)。默认为true。
(4) Setting.ShowGroupFooter用来设置分组页脚显示模式(GridViewGroupFooterMode枚举型)。默认为Hidden。可取值:Hidden、VisibleAlways、VisibleIfExpanded。
Hidden--不显示
VisibleAlways--一直显示
VisibleIfExpanded--只有展开时才显示
(5)分组数据间隔。GroupInterval属性。
示例:
<Settings GroupInterval="DateYear" / >
GroupInterval可赋如下值:Alphabetical、Date、DateMonth、DateRange、DateYear、Default、DisplayText、Value。
5.按分组值进行排序示例:this.ASPxGridView1.GroupSummarySortInfo.Clear();
this.ASPxGridView1.GroupSummarySortInfo.AddRange(new ASPxGroupSummarySortInfo("OCCDatetime", this.ASPxGridView1.GroupSummary["OCCDatetime"], ColumnSortOrder.Ascending));
二、从客户端实现数据分组1.使用GroupBy方法实现数据分组语法1:void GroupBy(int columnIndex);
语法2:void GroupBy(ASPxClientGridViewColumn column);
语法3:void GroupBy(string columnFieldNameOrId);
语法4:void GroupBy(string columnFieldNameOrId, int groupIndex);
语法5:void GroupBy(int columnIndex, int groupIndex);
语法6:void GroupBy(ASPxClientGridViewColumn column, int groupIndex);
语法7:void GroupBy(int columnIndex, int groupIndex,string sortOrder);
语法8:void GroupBy(ASPxClientGridViewColumn column, int groupIndex, string sortOrder);
语法9:void GroupBy(string columnFieldNameOrId, int groupIndex, string sortOrder);
2.分组的展开与折叠(1)使用ExpandAll展开所有分组。
语法: void ExpandAll();
使用ExpandRow展开指定分组行。
语法1:void ExpandRow(int visibleIndex);
语法2:void ExpandRow(int visibleIndex, bool recursive);
参数recursive:是否递归。
(3)使用CollapseAll折叠所有分组。
语法:void CollapseAll();
(4)使用CollapseRow折叠指定分组行。
语法1:void CollapseRow(int visibleIndex);
语法2:void CollapseRow(int visibleIndex, bool recursive);
3.判断分组行是否展开使用IsGroupRowExpanded方法。
语法:bool IsGroupRowExpanded(int visibleIndex);
4.判断是分组行还是数据行(1)判断是否分组行
function IsGroupRow(visibleIndex : int) : bool;
(2)判断是否数据行
function IsDataRow(visibleIndex : int) : bool;
三、用户拖动栏位到分组带实现分组
首先需要显示分组带:
设置是否显示分组带<Settings ShowGroupPanel="True" / >
使用鼠标将栏位拖动到分组带即可实现即时分组。将分组栏位拖回题头则取消分组。