如何对DevExpress ASPxGridView进行分组排序
这个任务可以通过以下几种方法来解决:
1.通过自定义栏位排序:按城市将网格分组,但是通过自定义栏位排序事件按国家对其排序。
2.在另一个域内对网格排序:按城市将网格分组,但是通过分组汇总排序信息类按国家对其排序。
3.通过自定义汇总类型对网格排序:按城市将网格分组,但是通过分组汇总排序信息类和自定义汇总计算事件按国家对其排序。
4.通过它们的名字对值进行排序:使用GridViewDataComboBoxColumn文本完成分组。
下面,你可以找到一些关于这些任务的更详细的描述:
1.自定义栏位排序:按城市将ASPxGridView分组,但是通过自定义栏位排序事件按国家对其排序。
要使用这种方法,你应该运用ASPxGridView.CustomColumnSort 事件。一个栏的Settings.SortMode 属性指定了当对这个栏进行排序时,网格的数据是如何被排序的。在我们这个例子中,属性值被设为‘自定义’。因此,一个针对‘城市’栏的自定义排序算法将会 通过处理自定义栏位排序事件被执行。
[ASPx]
在自定义栏位排序事件句柄中,我们对两行进行了比较。通过CustomColumnSortEventArgs.Column 参数来指定被处理的栏位。CustomColumnSortEventArgs.Value1 和CustomColumnSortEventArgs.Value2 两个参数区分出在这个栏中的行值。
自定义比较的结果用来设定CustomColumnSortEventArgs.Result 的参数,如下所示:
结果设为-1的情况,当数据以升序排列时,第一行应该放置在第二行的上面或者当数据位降序排列时,第一行放置在第二行的下面。
结果设为1的情况,当数据以升序排列时,第一行应该放置在第二行的下面或者当数据位降序排列时,第一行放置在第二行的上面。
结果设为0时表示这两行相等。这种情况下,这些行在网格里的位置将会根据它们在数据源里的索引来确定。
我们把e.handled参数的值设为真,从而忽略掉默认的比较机制。
[C#]
protected void gridCustomers_CustomColumnSort(object sender, CustomColumnSortEventArgs e) {
if (e.Column != null & e.Column.FieldName == "City") {
object country1 = e.GetRow1Value("Country");
object country2 = e.GetRow2Value("Country");
int res = Comparer.Default.Compare(country1, country2);
if (res == 0) {
object city1 = e.Value1;
object city2 = e.Value2;
res = Comparer.Default.Compare(city1, city2);
}
e.Result = res;
e.Handled = true;
}
}
2.在另一个域内对ASPxGridView排序:按城市将ASPxGridView分组,但是通过分组汇总排序信息类按国家对其排序。
根据ASPxGroupSummarySortInfo对象提供的信息,基于此信息得到的汇总值来将组中的行排序。这些对象引入的属性代表了排序次序,用来计算汇总值的汇总项,等等。这些属性是只读的,并且由构造函数来初始化。
通过汇总值来排序组中的行,创建一个ASPxGroupSummarySortInfo对象,使用 GroupSummarySortInfoCollection.Add 方法把它添加到ASPxGridView的分组汇总排序信息集合里。把ASPxGroupSummarySortInfo对象添加到这个集合以后,组中的 行就会根据它们的汇总值自动的排序。
[C#]
gridCustomers.GroupSummarySortInfo.Clear();
ASPxGroupSummarySortInfo sortInfo = new ASPxGroupSummarySortInfo();
sortInfo.SortOrder = ColumnSortOrder.Ascending;
sortInfo.SummaryItem = gridCustomers.GroupSummary["Country", SummaryItemType.Min];
sortInfo.GroupColumn = "City";
3.通过自定义汇总类型对ASPxGridView排序:按城市将ASPxGridView分组,但是通过分组汇总排序信息类和自定义汇总计算事件按国家对其排序。
这种方法与前一种方法的不同点仅仅在于排序机制使用了一个自定义的汇总值。汇总自定义计算法则应用到自定义汇总计算事件句柄中。自定义汇总计算事件会触发 汇总计算中涉及到的每一行。当计算总的汇总值的时候,该事件将会被每一个数据行触发。在当前这个例子里,为了简单起见,自定义的总的汇总值等于子汇总值。
请参考ASPxGridView.CustomSummaryCalculate 事件和自定义汇总函数,这有助于学习更多关于自定义汇总计算过程的知识。
[C#]
gridCustomers.GroupSummarySortInfo.Clear();
ASPxGroupSummarySortInfo sortInfo = new ASPxGroupSummarySortInfo();
sortInfo.SortOrder = ColumnSortOrder.Ascending;
sortInfo.SummaryItem = gridCustomers.GroupSummary["Country", SummaryItemType.Custom];
sortInfo.GroupColumn = "City";
gridCustomers.GroupSummarySortInfo.AddRange(sortInfo);
[C#]
protected void gridCustomers_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
ASPxSummaryItem item = e.Item as ASPxSummaryItem;
if (item.FieldName == "Country") {
if (e.SummaryProcess == CustomSummaryProcess.Finalize)
e.TotalValue = e.FieldValue.ToString();
}
}
4.通过它们的名字对值进行排序:使用GridViewDataComboBoxColumn文本完成分组。
想通过文本而不是值来对GridViewDataComboBoxColumn进行排序的话,你应该将ASPxGridViewBehaviorSettings.SortMode 属性值设为‘显示文本’。
[ASPx]
同样,这种方法演示了如何为已分组的栏显示一个自定义文本。你应该使用GroupRowContent模板来完成这个任务。
[ASPx]
dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { string str=string str = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()
有时候客户想要在一个域内对ASPxGridView的栏进行分组,而在另一个域内对其排序。本文中,我想描述一下如何通过不同的方法实现这个特点。因为,这并不像它可能看起来的那样简单。在设计时,我们创建了一个简单的网格,它的数据从数据源控件处获得。我们想按城市来对ASPxGridView进行分组,而按国家对它进行排序。
这个任务可以通过以下几种方法来解决:
1.通过自定义栏位排序:按城市将网格分组,但是通过自定义栏位排序事件按国家对其排序。
2.在另一个域内对网格排序:按城市将网格分组,但是通过分组汇总排序信息类按国家对其排序。
3.通过自定义汇总类型对网格排序:按城市将网格分组,但是通过分组汇总排序信息类和自定义汇总计算事件按国家对其排序。
4.通过它们的名字对值进行排序:使用GridViewDataComboBoxColumn文本完成分组。
下面,你可以找到一些关于这些任务的更详细的描述:
1.自定义栏位排序:按城市将ASPxGridView分组,但是通过自定义栏位排序事件按国家对其排序。
要使用这种方法,你应该运用ASPxGridView.CustomColumnSort 事件。一个栏的Settings.SortMode 属性指定了当对这个栏进行排序时,网格的数据是如何被排序的。在我们这个例子中,属性值被设为‘自定义’。因此,一个针对‘城市’栏的自定义排序算法将会 通过处理自定义栏位排序事件被执行。
[ASPx]
<dx:GridViewDataTextColumn FieldName="City" VisibleIndex="2" GroupIndex="0">
<Settings SortMode="Custom"/>
</dx:GridViewDataTextColumn>
在自定义栏位排序事件句柄中,我们对两行进行了比较。通过CustomColumnSortEventArgs.Column 参数来指定被处理的栏位。CustomColumnSortEventArgs.Value1 和CustomColumnSortEventArgs.Value2 两个参数区分出在这个栏中的行值。
自定义比较的结果用来设定CustomColumnSortEventArgs.Result 的参数,如下所示:
结果设为-1的情况,当数据以升序排列时,第一行应该放置在第二行的上面或者当数据位降序排列时,第一行放置在第二行的下面。
结果设为1的情况,当数据以升序排列时,第一行应该放置在第二行的下面或者当数据位降序排列时,第一行放置在第二行的上面。
结果设为0时表示这两行相等。这种情况下,这些行在网格里的位置将会根据它们在数据源里的索引来确定。
我们把e.handled参数的值设为真,从而忽略掉默认的比较机制。
[C#]
protected void gridCustomers_CustomColumnSort(object sender, CustomColumnSortEventArgs e) {
if (e.Column != null & e.Column.FieldName == "City") {
object country1 = e.GetRow1Value("Country");
object country2 = e.GetRow2Value("Country");
int res = Comparer.Default.Compare(country1, country2);
if (res == 0) {
object city1 = e.Value1;
object city2 = e.Value2;
res = Comparer.Default.Compare(city1, city2);
}
e.Result = res;
e.Handled = true;
}
}
2.在另一个域内对ASPxGridView排序:按城市将ASPxGridView分组,但是通过分组汇总排序信息类按国家对其排序。
根据ASPxGroupSummarySortInfo对象提供的信息,基于此信息得到的汇总值来将组中的行排序。这些对象引入的属性代表了排序次序,用来计算汇总值的汇总项,等等。这些属性是只读的,并且由构造函数来初始化。
通过汇总值来排序组中的行,创建一个ASPxGroupSummarySortInfo对象,使用 GroupSummarySortInfoCollection.Add 方法把它添加到ASPxGridView的分组汇总排序信息集合里。把ASPxGroupSummarySortInfo对象添加到这个集合以后,组中的 行就会根据它们的汇总值自动的排序。
[C#]
gridCustomers.GroupSummarySortInfo.Clear();
ASPxGroupSummarySortInfo sortInfo = new ASPxGroupSummarySortInfo();
sortInfo.SortOrder = ColumnSortOrder.Ascending;
sortInfo.SummaryItem = gridCustomers.GroupSummary["Country", SummaryItemType.Min];
sortInfo.GroupColumn = "City";
3.通过自定义汇总类型对ASPxGridView排序:按城市将ASPxGridView分组,但是通过分组汇总排序信息类和自定义汇总计算事件按国家对其排序。
这种方法与前一种方法的不同点仅仅在于排序机制使用了一个自定义的汇总值。汇总自定义计算法则应用到自定义汇总计算事件句柄中。自定义汇总计算事件会触发 汇总计算中涉及到的每一行。当计算总的汇总值的时候,该事件将会被每一个数据行触发。在当前这个例子里,为了简单起见,自定义的总的汇总值等于子汇总值。
请参考ASPxGridView.CustomSummaryCalculate 事件和自定义汇总函数,这有助于学习更多关于自定义汇总计算过程的知识。
[C#]
gridCustomers.GroupSummarySortInfo.Clear();
ASPxGroupSummarySortInfo sortInfo = new ASPxGroupSummarySortInfo();
sortInfo.SortOrder = ColumnSortOrder.Ascending;
sortInfo.SummaryItem = gridCustomers.GroupSummary["Country", SummaryItemType.Custom];
sortInfo.GroupColumn = "City";
gridCustomers.GroupSummarySortInfo.AddRange(sortInfo);
[C#]
protected void gridCustomers_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e) {
ASPxSummaryItem item = e.Item as ASPxSummaryItem;
if (item.FieldName == "Country") {
if (e.SummaryProcess == CustomSummaryProcess.Finalize)
e.TotalValue = e.FieldValue.ToString();
}
}
4.通过它们的名字对值进行排序:使用GridViewDataComboBoxColumn文本完成分组。
想通过文本而不是值来对GridViewDataComboBoxColumn进行排序的话,你应该将ASPxGridViewBehaviorSettings.SortMode 属性值设为‘显示文本’。
[ASPx]
<SettingsBehavior SortMode="DisplayText" />
同样,这种方法演示了如何为已分组的栏显示一个自定义文本。你应该使用GroupRowContent模板来完成这个任务。
[ASPx]
<Templates>
<GroupRowContent>
<%# "Category: " + Container.GroupText%>
</GroupRowContent>
</Templates>
C# winfrom 使用 devexprees 怎样实现图中的效果呢?
用 html+css
C# winfrom 使用 devexprees 怎样实现图中的效果呢?
用 html+css
甄咸普立: 具体实现步骤如下:1. 利用AspxThemeDeployer工具生成Dev皮肤文件2. 在项目中创建App_Themes文件夹,添加第一步生成的皮肤文件到文件夹中.3. 在事件中更改皮肤主题.如:this.Theme = “皮肤名称”
江东区13751268384: 如何对devexpress控件进行修复 - ?
甄咸普立: 这里,你现在的选项应该是:“全部显示”.其实那么多项目,是因为VS是个大杂烩,每个语言和模板只支持一部分控件,你不能拿office的控件简单的放到MFC程序中.在工具箱中右键,去掉“显示全部”,才是MFC对话框可用控件.如果希望使用MFC支持的非标准控件,在对话框上空白处右键,选择“插入ActiveX控件”即可.
江东区13751268384: 如何在VS工具箱中添加DevExpress控件 - ?
甄咸普立: ①使用控制台进入DevExpress安装目录: cd D:Program Files (x86)DevExpress 14.1ComponentsTools②添加DevExpress控件: ToolboxCreator.exe/ini:toolboxcreator.ini③移除DevExpress控件: ToolboxCreator.exe/ini:toolboxcreator.ini/remove如何在VS工具箱中添加DevExpress控件
江东区13751268384: 如何在安装过程中部署DevExpress控件 - ?
甄咸普立: 我们分析DevExpress的特殊补丁发现,他们是一个DOS批处理文件,主要是创建相应的目录,然后把DevExpress的三个特殊文件复制到对应的目录中,就可以实现DevExpress的正常使用了.那个DOS批处理文件内容如下所示.一般我们部署...
江东区13751268384: VS 软件如何去掉DevExpress - ?
甄咸普立: 安装完DevExpress后通常会自动在VS加载!网络上有一个方法去除DevExpress自动加载,但不是每次都能用!接下来的方法能解决!1、先说网络上那个方法吧!都是在VS菜单栏中-工具》扩展管理器》卸载,但是遇到下图情形就没法子了!2、此时用另一个方法,菜单栏中,点击DevExpress》Options,弹出下图所示窗体,设置如下,之后重新启动,VS就ok了!如若要继续加载,可在:工具》Load DevExpress,点击就可以了
江东区13751268384: 如何在DevExpress ASPxGridView中进行编辑 - ?
甄咸普立: 展示编辑按钮列 <dxwgv:GridViewCommandColumn VisibleIndex="0"> <EditButton Visible="True" Text="修改" /> <DeleteButton Visible="true" Text="删除" /> <NewButton Visible="True" Text="新建" /> <CancelButton Visible="...
江东区13751268384: 如何破解 devexpress - ?
甄咸普立: DevExpress 15.2 破解版 (附汉化包)1、首先打开DevExpress 15.2 破解版 (附汉化包)我提供下载安装包,2、然后默认一键next,选择安装路径;3、安装完毕就可以使用,详情请看上面的下载处.
江东区13751268384: devExpress如何安装啊 - ?
甄咸普立: https://www.devexpress.com/去下载安装插件.如果安装winform相关需要30分钟左右.(正版试用期30天) 安装后会出现Demo Center 14.1的一个应用程序.打开可以看到提供给开发者的一些例子. DEMO可以去C:\Users\Public\Documents\...
江东区13751268384: 如何使用DevExpress XtraReports创建一个表格报表 - ?
甄咸普立: 一、开启MS Visual Studio (2008或2010),创建一个支持任何平台的新应用程序,或打开一个现有的.二、添加一个新的空白报表(DevExpress XtraReports如何为应用程序添加新报表).三、绑定该报表到示例数据库Northwind的“产品”表上...
江东区13751268384: 如何在Delphi工程中加载及使用DevExpress库 - ?
甄咸普立: DevExpress 是比较有名的控件套件之一,含有多种功能强大的控件,如表格、界面等等.在 delphi 里使用 DevExpress ,因为 devExpress 是第三方控件,需要先进行安装,根据版本的区别,有带源码的版本或是其他版本.通常是打开与 delphi 版本相一致的 dpk,编译后进行安装.