标题:请教一个DataGridView 排序的题?
只看楼主
lu88138
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-7-24
 问题点数:0 回复次数:10 
请教一个DataGridView 排序的题?
有哪位高手帮我看看,能不能实现字符排序如下所示:

升序       降序
1          20
2          10
10         2
20         1

是字符型的。
我是在SortCompare 事件里面处理的,但就是不能实现,SortMode 是Automatic。代码如下:

        private void gridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
        {
            int Length1 = e.CellValue1.ToString().Length;
            int Length2 = e.CellValue2.ToString().Length;
            if (Length1 == Length2)
            {
                e.SortResult = System.(e.CellValue1.ToString(), e.CellValue2.ToString());
            }
            else
            {
                if (Length1 > Length2)
                    e.SortResult = 1;
                else e.SortResult = -1;
            }
        }
请各位高手看看问题出在哪?
搜索更多相关主题的帖子: DataGridView 
2008-07-24 17:00
xyq701830
Rank: 1
来 自:浙江
等 级:新手上路
威 望:2
帖 子:263
专家分:0
注 册:2008-6-24
得分:0 
gridview不自带有排序功能的么.干吗还要再排序啊

菜猪猪``
2008-07-24 17:02
lu88138
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-7-24
得分:0 
有呀,就是不能实现像上面这样的,所以我想自已处理,
自带的排序是这样的结果:

升序        降序
1           20
10          2
2           10
20          1

请问有没其它方法可以实现我最上面的这种结果
2008-07-24 17:07
shmilylee
Rank: 2
来 自:江苏扬州蹩脚小公司
等 级:论坛游民
威 望:2
帖 子:242
专家分:22
注 册:2007-7-6
得分:0 
不太明白你的意思,比较2个单元格的值,再指定他们的排序规则
但是为什么要用字符串长度去比较呢。。。。。
2008-07-25 14:44
lu88138
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-7-24
得分:0 
就是因为在比较"10"跟"2"时,"2"要大于"10",所示才想出这样的方式来比较,要么就转换成int型的再比较,但是都无法实现我最上面的那种排序,
有哪位高手帮帮忙,看看是什么原因?最好能给段代码。
2008-07-25 17:14
shmilylee
Rank: 2
来 自:江苏扬州蹩脚小公司
等 级:论坛游民
威 望:2
帖 子:242
专家分:22
注 册:2007-7-6
得分:0 
下午上班的时候写了很多,点回复的时候我考,居然数据库连接过多,当掉了!

我觉得,e.SortResult = System.(e.CellValue1.ToString(), e.CellValue2.ToString());只能把每行当成整体来排序吧
楼主的意思好像是要把数据拆开来排序,不知道有没有理解错误

再说SortCompare是有缺陷的,我没记错的话好像是不能指定数据源的

如果是我的话,
如果数据源是二维数组,那就好办了,数组排序再绑定
如果数据源是DataTable或DataSet,把每列当成数组拿出来排序再插回去,再绑定

我也不知道有没有更好的办法,希望有更多的朋友提出建议
2008-07-25 23:25
lu88138
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-7-24
得分:0 
回复 6# shmilylee 的帖子
谢谢楼上给我的意见,我只是想在包含字符与数字的字符串里,当字符相等时,以数字来排序,有没有更简单更快的方法可以实现的?我学这个不久,请多指点一下。
2008-07-26 10:12
duanchangren
Rank: 1
等 级:新手上路
威 望:1
帖 子:252
专家分:0
注 册:2008-7-26
得分:0 
你把问题描述清楚点
这样没思路
2008-07-26 23:49
lu88138
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-7-24
得分:0 
就是在Datagridview里,要实现:"a1","a2","a10","a20"这样的排序,其默认排序应该是:"a1","a10","a2","a20";请问如何实现,多指点一下。
2008-07-27 09:47
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
得分:0 
1、转换成数字再按该数字排序。
2、把编号搞成一样长(a01、a02、a10...)

2008-07-27 14:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-225099-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.080857 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved