一般的控件或者组件都支持按照某一列进行排序。但是,这种排序是根据数据源里的数据默认按照降序或升序排序的,同时这样的排序与字段的类型有关。

假设现在字段的类型是字符串类型 ,但是,存储的数据时数字加一些特殊的符号例如: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控件自定义排序实现的更多相关文章

  1. DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents

    上一节,已经介绍了ASPxGridView的自定义列和基本事件 ,本节接着将介绍Dev控件的客户端事件模型. 在上节示例基础上,我们增加一行菜单,使用Dev的ASPxMenu来实现,如下图所示. 图一 ...

  2. DEV控件的Gridview1

    DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...

  3. Dev控件GridView单元格绑定控件

    Dev控件GridView单元格绑定控件 //文本按钮 RepositoryItemButtonEdit btnFields = new RepositoryItemButtonEdit();//创建 ...

  4. DEV控件中GridView中的复选框与CheckBox实现联动的全选功能

    最初的界面图如图1-1(全选框ID: cb_checkall  DEV控件名称:gcCon ): 要实现的功能如下图(1-2  1-3  1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...

  5. DEV控件Grid显示行号

    DEV控件Grid的显示行号需要通过一个事件来设置,具体设置代码为: private void gridView1_CustomDrawRowIndicator(object sender, DevE ...

  6. Dev控件treeList

    之前做过一段时间,当时copy 的别人的代码,这就就把节点给添加了,上次帮同事做也发现了这个问题,当时没有记下来,今天有做,磨了半天,记下来吧. Dev控件treeList 要添加节点第一步是右键添加 ...

  7. DEV 控件使用之:TreeList

    使用DEV控件也有一段时间了,一直想写点东西.最近又使用到TreeList控件,这个控件对于刚使用的人来说确实不好掌握.我想把自己知道的写下来,让还不熟悉的慢慢学会使用,对于会使用的大家交流下.如果有 ...

  8. dev控件 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内

    前言 本文主要讲解 xtraTabbedMdiManager 如何将关闭子窗体改为收回主窗体内,顺便附上Float(浮动)的时候使窗体最大化,及指定只能某一个子窗体能浮动放大. 下面进入正题. 一.首 ...

  9. dev 控件的treelist

    最近项目中要求用dev 控件的treelist 树形控件. 如下图 要求如下: 1:选择父节点后,子节点全部打钩: 2:选择子节点而不选择父节点,则从当前节点的父节点一直到根节点check框都是半选状 ...

随机推荐

  1. 聚类算法初探(四)K-means

    最近由于工作需要,对聚类算法做了一些相关的调研.现将搜集到的资料和自己对算法的一些理解整理如下,供大家参考. 另外在算法代码方面,我也做了一些实现(包括串行和并行),欢迎感兴趣的朋友探讨和交流. 第一 ...

  2. ListView及Adapter的使用

    一.使用ArrayAdapter 其中ArrayAdapter的构造函数有如下几个,其中resource是指每个列表项的布局文件,objects是指列表项的数据源,此处通常指一个数组 ArrayAda ...

  3. Linux下Matlab崩溃的解决方法

    猜想主要是因为图形显示用了OpenGL加速造成不稳定. 我的运行环境是: Ubuntu 10.04 LTS 64bit Matlab R2010b 解决方法是启动时用: $MATLAB_DIR/bin ...

  4. JUnit报空指针错误,控制台不报任何错误

    解决方法:1. 在测试类的beforeClass方法上加try-catch块 2. 添加main方法,里面添加beforeClass();

  5. zmud中文版_汉化补丁_汉化文件ZMUD破解

    ZMUD721中文版 http://pan.baidu.com/s/1mixwIoC

  6. MySQL之字符串函数

    1. left函数, 对查询字段的字符串内容进行截取,用法select left(content,50) as summary from article; 在这里的意思是只查询content列内容的前 ...

  7. Git 操作常用命令

    Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push ...

  8. 使用正则表达式限制TextBox输入

    /// <summary> /// 使用正则表达式限制输入 /// </summary> public class TextBoxRegex : TextBox { // 正则 ...

  9. C# 堆栈的数据结构 (二)

    堆栈是一种常用的数据结构,并且是线性表操作的子集,即操作受限的线性表.因此需要用到Clist 线性表类 public class CStack { private Clist m_List;//创建链 ...

  10. 谷歌page speed 安装使用及页面问题详解

    原文地址:http://wenku.baidu.com/view/b0a61f3ebcd126fff7050b40.html 谷歌page speed 安装使用及页面问题详解 谷歌page speed ...