当前位置: 首页 > 编程笔记 >

C# listview 点击列头排序的实例

萧繁
2023-03-14
本文向大家介绍C# listview 点击列头排序的实例,包括了C# listview 点击列头排序的实例的使用技巧和注意事项,需要的朋友参考一下

实例如下:

#region 自定义变量
  int currentCol = -1;
  bool sort;
  #endregion//列头点击事件

private void lvw_ColumnClick(object sender, ColumnClickEventArgs e)
  {
   string Asc = ((char)0x25bc).ToString().PadLeft(4, ' ');
   string Des = ((char)0x25b2).ToString().PadLeft(4, ' ');

   if (sort == false)
   {
    sort = true;
    string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');
    this.lvw.Columns[e.Column].Text = oldStr + Des;
   }
   else if (sort == true)
   {
    sort = false;
    string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');
    this.lvw.Columns[e.Column].Text = oldStr + Asc;
   }

   if(lvw.Columns[e.Column].Tag.ToString()=="n")//在设计器中把列头的tag设为"n",则表示该列按数字比较器处理,否则为文本
    lvw.ListViewItemSorter = new ListViewItemComparerNum(e.Column, sort);
   else
    lvw.ListViewItemSorter = new ListViewItemComparer(e.Column, sort);
   this.lvw.Sort();
   int rowCount = this.lvw.Items.Count;
   if (currentCol != -1)
   {
    if (e.Column != currentCol)
     this.lvw.Columns[currentCol].Text = this.lvw.Columns[currentCol].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');
   }
   currentCol = e.Column;
  }//文本比较器public class ListViewItemComparer : IComparer
  {
   public bool sort_b;
   public SortOrder order = SortOrder.Ascending;

   private int col;

   public ListViewItemComparer()
   {
    col = 0;
   }

   public ListViewItemComparer(int column, bool sort)
   {
    col = column;
    sort_b = sort;
   }

   public int Compare(object x, object y)
   {
    if (sort_b)
    {
     return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
    }
    else
    {
     return String.Compare(((ListViewItem)y).SubItems[col].Text, ((ListViewItem)x).SubItems[col].Text);
    }
   }
  }  //数字比较器
  public class ListViewItemComparerNum : IComparer
  {
   public bool sort_b;
   public SortOrder order = SortOrder.Ascending;

   private int col;

   public ListViewItemComparerNum()
   {
    col = 0;
   }

   public ListViewItemComparerNum(int column, bool sort)
   {
    col = column;
    sort_b = sort;
   }

   public int Compare(object x, object y)
   {
    decimal d1=Convert.ToDecimal(((ListViewItem)x).SubItems[col].Text);
    decimal d2=Convert.ToDecimal(((ListViewItem)y).SubItems[col].Text);
    if (sort_b)
    {
     return decimal.Compare(d1,d2);
    }
    else
    {
     return decimal.Compare(d2,d1);
    }
   }
  }

以上这篇C# listview 点击列头排序的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍C# ListView 点击表头对数据进行排序功能的实现代码,包括了C# ListView 点击表头对数据进行排序功能的实现代码的使用技巧和注意事项,需要的朋友参考一下 添加表头单击事件 排序用到的类 注意: 有的会报“错误 CS0305: 使用泛型 类型“System.Collections.Generic.IComparer<T>”需要 1 个类型参数” 这时只需要using S

  • 本文向大家介绍JavaScript实现表格点击排序的方法,包括了JavaScript实现表格点击排序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现表格点击排序的方法。分享给大家供大家参考。具体分析如下: 这里实现基于JS的表格点击排序效果,可以根据表格内的数据大小自动按顺序排列,股票网站常会见到这种功能。 希望本文所述对大家的javascript程序设计有所

  • 主要内容:SortedList 类的中的属性,SortedList 类的中的方法在 C# 中,SortedList 类用来表示键/值对的集合,这些键/值对按照键值进行排序,并且可以通过键或索引访问集合中的各个项。 我们可以将排序列表看作是数组和哈希表的组合,其中包含了可以使用键或索引访问各项的列表。如果您使用索引访问各项,那么它就是一个动态数组(ArrayList),如果您使用键访问各项,那么它就是一个哈希表(Hashtable)。另外,集合中的各项总是按键值进行排序。 So

  • 我有一个简单的JavaFX应用程序,它有一个表视图。表格视图显示了一些按特定顺序排序的数据。有没有办法显示箭头(默认情况下)指示数据已按该顺序排序? 我的代码如下:

  • 问题内容: 我在ListView上添加了一个标题视图,并且效果很好,我现在遇到的问题是单击标题时需要删除默认的单击/焦点效果。 除此之外,当某些项目为“禁用”选项时,是否还可以消除点击/焦点效果? 问题答案: 当然可以!对于页眉或页脚的观点,你可以只调用或分别。 对于常规列表项,您可以只返回该方法。:-)

  • 本文向大家介绍JS实现点击表头表格自动排序(含数字、字符串、日期),包括了JS实现点击表头表格自动排序(含数字、字符串、日期)的使用技巧和注意事项,需要的朋友参考一下 效果图如下: Demo演示地址:点击这里 主要的JS代码如下: 完整实例代码 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。