如何对ListView的项进行排序

原创 2002年09月22日 12:12:00

如何对ListView的项进行排序   

     当您使用资源浏览器查看文件时,您可以随心所欲的按名称、大小、类型及修改日期不同的列对文件进行大小排序。.Net提供的ListView组件没有直接提供这种功能,但要实现并不难。
    ListView.Sort()方法的功能是“对列表视图的项进行排序”,可当您调用它时却什么也没有发生,原因是您没有为listView1.ListViewItemSorter指定排序器。所以,首先必须写一个排序类。
public class mySorter:IComparer
{
private Comparer comparer;
private int sortColumn;
private SortOrder sortOrder;
public mySorter()
{
sortColumn=0;
sortOrder=SortOrder.None;
comparer=Comparer.Default;
}
//指定进行排序的列
public int SortColumn
{
get {return sortColumn;}
set {sortColumn=value;}
}
//指定按升序或降序进行排序
public SortOrder SortOrder
{
get {return sortOrder;}
set {sortOrder=value;}
}
public int Compare(object x,object y)
{
int CompareResult;
ListViewItem itemX=(ListViewItem)x;
ListViewItem itemY=(ListViewItem)y;
//在这里您可以提供自定义的排序
CompareResult=comparer.Compare(itemX.SubItems[this.sortColumn].Text,itemY.SubItems[this.sortColumn].Text);
if (this.SortOrder==SortOrder.Ascending)
return CompareResult;
else
if (this.SortOrder==SortOrder.Descending)
return (-CompareResult);
else
return 0;
}
}
  

    如何使用这个类,很简单。新建一个Windows应用程序,加入ListView组件listView1并将其View属性设为Details。

//加入排序类
private mySorter sorter;
//修改窗体构造函数
public Form1()
{
InitializeComponent();
sorter=new myColumnSorter();
//为ListViewItemSorter指定排序类
this.listView1.ListViewItemSorter=sorter;
sorter.SortOrder=SortOrder.Ascending;
}
//给单击表头事件添加代码
private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
if (e.Column==this.sorter.SortColumn)
{
if (this.sorter.SortOrder==SortOrder.Ascending)
this.sorter.SortOrder=SortOrder.Descending;
else
if (this.sorter.SortOrder==SortOrder.Descending)
this.sorter.SortOrder=SortOrder.Ascending;
else
return;
}
else
{
this.sorter.SortColumn=e.Column;
}
this.listView1.Sort();
}
   怎么样,效果不错吧,如果您需要自定义排序,那么您可以修改排序器的Compare()方法。

ListView的数据排序示例

ListView的数据排序示例         ListView中经常要用到对里面的条目的某一个数据进行排序,比如商品的价格、销售量,机票的数量、价格等。并且有些还要对某些条目进行记录(删除或保留另用...
  • wenzhi20102321
  • wenzhi20102321
  • 2017年03月25日 15:42
  • 1493

如何:对 ListView 项排序

  .NET Compact Framework 不支持 ListView 的 Sort 方法,但您仍可以通过 IComparer 接口对项进行排序,并使用 ArrayList 的 Sort 方法。下...
  • stephenpeng
  • stephenpeng
  • 2009年02月23日 12:54
  • 169

Android里针对ListView中选项进行排序的方法

public class UserListAdapter extends BaseAdapter { private Context mContext; private...
  • cnmilan
  • cnmilan
  • 2014年08月07日 17:58
  • 8647

C# listview 点击列头排序

#region 自定义变量 int currentCol = -1; bool sort; #endregion//列头点击事件 private vo...
  • rztyfx
  • rztyfx
  • 2016年08月01日 19:37
  • 801

使用vb.net 对 Windows Form 按列排序 ListView 项目

使用 Windows Form 按列排序 ListView 项目摘要: 说明如何根据所单击的列在 Microsoft .NET 中的 ListView 控件提供项目排序。简介ListView 控件是显...
  • yikais
  • yikais
  • 2005年01月22日 11:24
  • 1687

JAVA对文件内数据进行排序的解决办法

今天在对文件内数据进行排序时,出了点问题,我的做法是这样的:首先从键盘输入一行数数字,用BufferedReader的readline方法获得,然后用FileWriter写入到文件中。跟着用FileR...
  • ieicihc
  • ieicihc
  • 2008年11月17日 18:19
  • 3783

java 如何对自定义的对象进行排序

import java.util.Comparator;import java.util.ArrayList; public class Demo{ public static void main(S...
  • caoyinghui1986
  • caoyinghui1986
  • 2008年03月30日 10:13
  • 3191

对数组进行重新排序

很多时候,我们从数据库中取出我们要的数据后,并不是就完成了工作,更多的我们需要对数据进行遍历处理等,这时候我们从数据库中获取数据时的排序可能就被打乱了, 需要对数组重新排序,下面就写写汇总到的对一维和...
  • Kit_G
  • Kit_G
  • 2017年08月15日 01:26
  • 240

对ListView进行排序

//对ListView进行排序, piCol表示列索引, pbAutoOrder表示是否自动排序procedure SortListColumn(piCol: Integer; pbAutoOrder...
  • zwylly99
  • zwylly99
  • 2007年09月18日 12:48
  • 283

C#:ListView 点击表头对数据排序

今天写.Net大作业时,有一个功能是点击ListView的每列的表头时,对整个表的信息按该列进行升序或降序排序。我的这个表的数据比较特殊,里面有string,int,float三种数据类型,而C#的L...
  • liqiancao
  • liqiancao
  • 2016年03月20日 23:26
  • 3483
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何对ListView的项进行排序
举报原因:
原因补充:

(最多只允许输入30个字)