DEV控件自定义排序实现
一般的控件或者组件都支持按照某一列进行排序。但是,这种排序是根据数据源里的数据默认按照降序或升序排序的,同时这样的排序与字段的类型有关。
假设现在字段的类型是字符串类型 ,但是,存储的数据时数字加一些特殊的符号例如:20/1 ,1/5,1/30,0/2等等的数据。这时你不想根据字符串对它们进行排序,
而是想让它们按照数字进行排序例如:0/2,1/5,1/30,20/1。进行排序。
一般的排序都可以通过以下几种方式实现
有时候客户想要在一个域内对ASPxGridView的栏进行分组,而在另一个域内对其排序。本文中,我想描述一下如何通过不同的方法实现这个特点。因为,这并不像它可能看起来的那样简单。
在设计时,我们创建了一个简单的网格,它的数据从数据源控件处获得。我们想按城市来对ASPxGridView进行分组,而按国家对它进行排序。
这个任务可以通过以下几种方法来解决:
1.通过自定义栏位排序:按城市将网格分组,但是通过自定义栏位排序事件按国家对其排序。
2.在另一个域内对网格排序:按城市将网格分组,但是通过分组汇总排序信息类按国家对其排序。
3.通过自定义汇总类型对网格排序:按城市将网格分组,但是通过分组汇总排序信息类和自定义汇总计算事件按国家对其排序。
4.通过它们的名字对值进行排序:使用GridViewDataComboBoxColumn文本完成分组。
下面已第一种为例,此时就需要做下面两步就可以实现:
1.设置控件后组件的自定义排序属性:sortModel = custom;
2.再添加一个自定义事件
private void gridView1_CustomColumnSort(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnSortEventArgs e)
{
if (e.Column != null & e.Column.FieldName == "PACKAMOUNT")
{
string[] tempPacks1 = e.Value1.ToString().Split('/');
string[] tempPacks2 = e.Value2.ToString().Split('/');
int res = Comparer.Default.Compare(Convert.ToInt32(tempPacks1[0]), Convert.ToInt32(tempPacks2[0]));
if (res != 0) // 判断/之后的数据比较
{
e.Result = res;
e.Handled = true;
}
else if (tempPacks1.Length == 2 && tempPacks2.Length == 2)
{
int res1 = Comparer.Default.Compare(Convert.ToInt32(tempPacks1[1]), Convert.ToInt32(tempPacks2[1]));
e.Result = res1;
e.Handled = true;
}
else
{
e.Result = tempPacks1.Length > tempPacks2.Length ? 1 : -1;
e.Handled = true;
}
}
}
DEV控件自定义排序实现的更多相关文章
- DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents
上一节,已经介绍了ASPxGridView的自定义列和基本事件 ,本节接着将介绍Dev控件的客户端事件模型. 在上节示例基础上,我们增加一行菜单,使用Dev的ASPxMenu来实现,如下图所示. 图一 ...
- DEV控件的Gridview1
DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...
- Dev控件GridView单元格绑定控件
Dev控件GridView单元格绑定控件 //文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建 ...
- DEV控件中GridView中的复选框与CheckBox实现联动的全选功能
最初的界面图如图1-1(全选框ID: cb_checkall DEV控件名称:gcCon ): 要实现的功能如下图(1-2 1-3 1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...
- DEV控件Grid显示行号
DEV控件Grid的显示行号需要通过一个事件来设置,具体设置代码为: private void gridView1_CustomDrawRowIndicator(object sender, DevE ...
- Dev控件treeList
之前做过一段时间,当时copy 的别人的代码,这就就把节点给添加了,上次帮同事做也发现了这个问题,当时没有记下来,今天有做,磨了半天,记下来吧. Dev控件treeList 要添加节点第一步是右键添加 ...
- DEV 控件使用之:TreeList
使用DEV控件也有一段时间了,一直想写点东西.最近又使用到TreeList控件,这个控件对于刚使用的人来说确实不好掌握.我想把自己知道的写下来,让还不熟悉的慢慢学会使用,对于会使用的大家交流下.如果有 ...
- dev控件 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内
前言 本文主要讲解 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内,顺便附上Float(浮动)的时候使窗体最大化,及指定只能某一个子窗体能浮动放大. 下面进入正题. 一.首 ...
- dev 控件的treelist
最近项目中要求用dev 控件的treelist 树形控件. 如下图 要求如下: 1:选择父节点后,子节点全部打钩: 2:选择子节点而不选择父节点,则从当前节点的父节点一直到根节点check框都是半选状 ...
随机推荐
- Mobile Web开发 处理设备的横竖屏
为了应对移动设备屏幕的碎片化,我们在开发Mobile Web应用时,一个最佳实践就是采用流式布局,保证最大可能地利用有限的屏幕空间.由于屏幕存在着方向性,用户在切换了屏幕的方向后,有些设计上或实现上的 ...
- Apple Swift学习资料汇总
今年的苹果开发者大会(WWDC)上,公布了ios8的几个新特性,其中包括引入了群聊功能,支持第三方输入法等功能.但更让开发者感兴趣的莫过于Swift语言的发布了. Swift是apple自创的一门转为 ...
- VMware虚拟机与主机联通及配置上网
vmware版本:10.0.0 build-1295980,安装redhat enterprise linux 5.8 一.物理机与虚拟机联通,但不联网 1.虚拟网络VMnet1设置: 此时,物理主机 ...
- ThreadLocal 在web环境下使用的边界问题
ThreadLocal 相关分析,请查看http://wangxinchun.iteye.com/blog/1884228 另外一个必须要提的点是: ThreadLocal在线程池环境下的使用. 比如 ...
- android通讯录导航栏源码(一)
通讯录导航栏源码: 1.activity package com.anna.contact.activity; import java.util.ArrayList; import java.util ...
- C# for循环 迭代法 穷举法应用
迭代 //兔子生兔子 class Class5 { static void Main(string[] args) { int tu1 = 1, tu2 = 1; //tu1是倒数第一个月的兔子 ...
- js 完美兼容浏览器的复制功能
1,js结合swf的复制功能,完美兼容火狐,谷歌,360,ie8,使用示例:(ps:引入copy.swf比较重要,文件传送门 解压密码:http://www.bieanju.com/,为了防止360删 ...
- python 多线程爬虫
最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术的实现. 1.larbin的URL去重用的很高效的bloom filter算法: 2. ...
- matlab求方差,均值,均方差,协方差的函数
1. 均值 数学定义: Matlab函数:mean >>X=[1,2,3] >>mean(X)=2 如果X是一个矩阵,则其均值是一个向量组.mean(X,1)为列向量的均值,m ...
- golang Rsa
package models import ( "crypto/rand" "crypto/rsa" "crypto/x509" " ...