文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ListView实现点击列排序

ListView实现点击列排序

时间:2010-12-20  来源:m苗子

本文提供两种方法,但是本质都相同,都用到了IComparer的相关功能

1.方法一

   代码如下

   

//定义一个ListViewColumnSorter类实例,该类继承自IComparer
ListViewColumnSorter ColumnSorter;
private void Listview1_ColumnClick(object sender,ColumnClickEventArgs e)
{
if(e.Column==ColumnSorter.Column)
{
if(ColumnSorter.Order==SortOrder.Ascending)
{
ColumnSorter.Order
=SortOrder.Descending;
}
else
ColumnSorter.Order
=SortOrder.Ascending;
}
else
{
ColumnSorter.Column
=e.Column;
ColumnSorter.Order
=SortOrder.Ascending;
}
this.ListView1.Sort();

}

....

//在窗体构造函数中,初始化Sorter并把Sorter值给ListView1的排序属性
ColumnSorter = new ListViewColumnSorter();
this.listView1.ListViewItemSorter = lvwColumnSorter;

 

这种方法使用了ListView本身提供的 ListViewItmeSorter属性 其值为自己定义的ListViewColumnSorter实例

2.方法二:

  自己定义一个类继承自IComparer接口

  代码如下:

  

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;
}
}

 

在ListView的ColumnClick事件中调用

代码如下

 

  private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (this.listView1.Columns[e.Column].Tag == null)
this.listView1.Columns[e.Column].Tag = true;
bool flag = (bool)this.listView1.Columns[e.Column].Tag;
if (flag)
this.listView1.Columns[e.Column].Tag = false;
else
this.listView1.Columns[e.Column].Tag = true;
this.listView1.ListViewItemSorter = new ListViewSort(e.Column, this.listView1.Columns[e.Column].Tag);
this.listView1.Sort();//对列表进行自定义排序
}

从上段代码中,可以看出来 第二种方法和第一种方法本质上是一样的,只不过我们用的是自己定义的排序类而已

 

最后要说一下,当我们调用ListView的Sort方法时,就会去隐式调用ListViewItemSorter属性对应的类实现的ComPare方法

相关阅读 更多 +
排行榜 更多 +
翌日波奇狗的历险记手机版下载

翌日波奇狗的历险记手机版下载

休闲益智 下载
怪兽远征安卓版下载

怪兽远征安卓版下载

角色扮演 下载
谷歌卫星地图免费版下载

谷歌卫星地图免费版下载

生活实用 下载