您的位置:首页 > 编程语言 > C#

C# ListView 点击表头对数据进行排序功能的实现代码

2017-04-29 14:05 1126 查看

添加表头单击事件

private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (listView1.Columns[e.Column].Tag == null)
{
listView1.Columns[e.Column].Tag = true;
}
bool tabK = (bool)listView1.Columns[e.Column].Tag;
if (tabK)
{
listView1.Columns[e.Column].Tag = false;
}
else
{
listView1.Columns[e.Column].Tag = true;
}
listView1.ListViewItemSorter = new ListViewSort(e.Column, listView1.Columns[e.Column].Tag);
//指定排序器并传送列索引与升序降序关键字
listView1.Sort();//对列表进行自定义排序
}

排序用到的类

public class ListViewSort : IComparer
{
private int col;
private bool descK;
public ListViewSort()
{
col = 0;
}
public ListViewSort(int column, object Desc)
{
descK = (bool)Desc;
col = column; //当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递
}
public int Compare(object x, object y)
{
int tempInt = String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
if (descK)
{
return -tempInt;
}
else
{
return tempInt;
}
}
}

注意:
有的会报“错误 CS0305: 使用泛型 类型“System.Collections.Generic.IComparer<T>”需要 1 个类型参数”
这时只需要using System.Collections.Generic;改为using System.Collections; 即可。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# ListView