c#Listview点击表头之后排序问题。

C#listview点击标头之后做升序或者降序处理,以下是代码:这段代码可以做升序和降序处理,但是个别的列不能降序,希望有这方面经验的高手帮忙指导一下。... C#listview点击标头之后做升序或者降序处理,以下是代码:

这段代码可以做升序和降序处理,但是个别的列不能降序,希望有这方面经验的高手帮忙指导一下。
展开
 我来答
baisedebing
2013-05-21 · TA获得超过202个赞
知道小有建树答主
回答量:225
采纳率:100%
帮助的人:116万
展开全部
其实一楼说的意思是首先你要把你算表达的数据写成一个类,有类属性。然后用List<T>来进行排序。
其实可以这样做。你既然会用IComparer这个接口,你用这个接口对类进行排序,当点击列表表头是,利用p.GetType().GetProperties()反射类属性传参对LIST进行排序,然后复制给LISTVIEW。
这个我用list实现过只是单一的属性排序,你涉及多属性,则可以利用反射类,或者利用全局变量来传参。
public static clnum = -1;
单击是 clnum = 单击的列数
class a:IComparer
{
private string aa;
private string bb;
public string AA{get;set}
public string BB{get;set}
public int compare(a x,a y)
{
if(clnum == 0)
{
return x.AA.compare(y.AA)
}else if(clum==1)
{
return x.BB.compare(y.BB)}
}
else{return 0;}
}
把值付给list<a>
list<a> a1 = new list<a>;
al.sort();
然后把a1复制给listview控件
没有编译器单词有可能打错了,这是一种方法思路。果断可以实现。
gyyyaann
推荐于2016-06-10 · 超过68用户采纳过TA的回答
知道答主
回答量:197
采纳率:0%
帮助的人:185万
展开全部

你有没有试过不要排列控件,而是排列控件中的数据,打个比方,你的数据是

class Person
{
    public string Name {get;set;}
    public string Age {get;set;}
}
public void method()
            {
                  List<Person> persons = new List<Person>();//这是你的数据源
                  persons = persons.OrderBy(p => p.Name).ToList();//按Name排序升序
                  persons = persons.OrderByDescending(p => p.Name).ToList();//按Name排序降序
            }
更多追问追答
追问
你好,感谢你的回答。你这个是按固定的某一列进行排序的,我要的效果是随便点一列就可以排序的。
追答

也可以的啊你改一改代码

class Person
            {
                  public string Name { get; set; }
                  public string Age { get; set; }
            }
            public List<Person> method(Func<Person,string> columnName)//这里用一个委托来做参数就好了,当然这个委托是一个方法,你只要根据你的数据来定义这个委托就好了,也可是是lamda表达式
            {
                  List<Person> persons = new List<Person>();//这是你的数据源
                  persons = persons.OrderBy(columnName).ToList();
                  return persons;
            }
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式