DevGridControl中GridView排序问题_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > DevGridControl中GridView排序问题

DevGridControl中GridView排序问题

 2017/11/2 18:11:41  LikeHeart  程序员俱乐部  我要评论(0)
  • 摘要:因数据源中需要显示**等内容所以数据列是string类型,字符串类型排序时,结果如下:这时我们需要做一些处理,达到所需排序效果先设置属性gridColumn1.SortMode=DevExpress.XtraGrid.ColumnSortMode.Custom;然后在事件CustomColumnSort中实现voidgdv_CustomColumnSort(objectsender,DevExpress.XtraGrid.Views.Base
  • 标签:view 问题

class="author-p-824761" style="font-size: 15px">因数据源中需要显示**等内容 所以数据列是string类型,字符串类型排序时,结果如下:

这时我们需要做一些处理,达到所需排序效果   先设置属性
gridColumn1.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;

然后在事件CustomColumnSort中实现

        void gdv_CustomColumnSort(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnSortEventArgs e)
        {
            if (e.Column != null)
            {
                string value1 = e.Value1.ToString();
                string value2 = e.Value2.ToString();
                int result = Comparer.Default.Compare
                    (ConvertToDecimal(value1, e.SortOrder), ConvertToDecimal(value2, e.SortOrder));
                e.Result = result;
                e.Handled = true;
            }
        }

        private decimal ConvertToDecimal(string input, DevExpress.Data.ColumnSortOrder sortOrder)
        {
            decimal result = 0;
            if (string.IsNullOrWhiteSpace(input) || input.Equals("**") || input.Equals("--"))
                result = sortOrder == DevExpress.Data.ColumnSortOrder.Ascending ? 9999 : -9999;
            else
                decimal.TryParse(input, out result);
            return result;
        }
效果如下:
    之后又遇到一个问题:某一列根据int类型值对应显示图片,但是在排序时并不是按照int值排序。 经查找解决方法为设置该列的排序SortMode
gridColumn1.SortMode = DevExpress.XtraGrid.ColumnSortMode.Value;

 

发表评论
用户名: 匿名