ListView点击列标题自动排序功能



ListView点击列标题自动排序功能 using  System;
ListView点击列标题自动排序功能
using  System.Collections.Generic;
ListView点击列标题自动排序功能
using  System.Text;
ListView点击列标题自动排序功能
using  System.Windows.Forms;
ListView点击列标题自动排序功能
using  System.Collections;
ListView点击列标题自动排序功能
namespace  ListViewSample
ListView点击列标题自动排序功能
{
ListView点击列标题自动排序功能    
public class ListViewSort
ListView点击列标题自动排序功能    
{
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能        
public ListViewSort()
ListView点击列标题自动排序功能        
{
ListView点击列标题自动排序功能            
//
ListView点击列标题自动排序功能            
// TODO: 在此处添加构造函数逻辑
ListView点击列标题自动排序功能            
//
ListView点击列标题自动排序功能
        }

ListView点击列标题自动排序功能
ListView点击列标题自动排序功能        
public static void ListView_ColumnClick(object sender, ColumnClickEventArgs e)
ListView点击列标题自动排序功能        
{
ListView点击列标题自动排序功能            ListView lv 
= sender as ListView;
ListView点击列标题自动排序功能            
// 检查点击的列是不是现在的排序列.
ListView点击列标题自动排序功能
            if (e.Column == (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn)
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                
// 重新设置此列的排序方法.
ListView点击列标题自动排序功能
                if ((lv.ListViewItemSorter as ListViewColumnSorter).Order == SortOrder.Ascending)
ListView点击列标题自动排序功能                
{
ListView点击列标题自动排序功能                    (lv.ListViewItemSorter 
as ListViewColumnSorter).Order = SortOrder.Descending;
ListView点击列标题自动排序功能                }

ListView点击列标题自动排序功能                
else
ListView点击列标题自动排序功能                
{
ListView点击列标题自动排序功能                    (lv.ListViewItemSorter 
as ListViewColumnSorter).Order = SortOrder.Ascending;
ListView点击列标题自动排序功能                }

ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能            
else
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                
// 设置排序列,默认为正向排序
ListView点击列标题自动排序功能
                (lv.ListViewItemSorter as ListViewColumnSorter).SortColumn = e.Column;
ListView点击列标题自动排序功能                (lv.ListViewItemSorter 
as ListViewColumnSorter).Order = SortOrder.Ascending;
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能            
// 用新的排序方法对ListView排序
ListView点击列标题自动排序功能
            ((ListView)sender).Sort();
ListView点击列标题自动排序功能        }

ListView点击列标题自动排序功能
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能    }

ListView点击列标题自动排序功能
ListView点击列标题自动排序功能    
/**/
ListView点击列标题自动排序功能    
/// <summary>
ListView点击列标题自动排序功能    
/// 继承自IComparer
ListView点击列标题自动排序功能    
/// </summary>

ListView点击列标题自动排序功能    public class ListViewColumnSorter : IComparer
ListView点击列标题自动排序功能    
{
ListView点击列标题自动排序功能        
/**/
ListView点击列标题自动排序功能        
/// <summary>
ListView点击列标题自动排序功能        
/// 指定按照哪个列排序
ListView点击列标题自动排序功能        
/// </summary>

ListView点击列标题自动排序功能        private int ColumnToSort;
ListView点击列标题自动排序功能        
/**/
ListView点击列标题自动排序功能        
/// <summary>
ListView点击列标题自动排序功能        
/// 指定排序的方式
ListView点击列标题自动排序功能        
/// </summary>

ListView点击列标题自动排序功能        private SortOrder OrderOfSort;
ListView点击列标题自动排序功能        
/**/
ListView点击列标题自动排序功能        
/// <summary>
ListView点击列标题自动排序功能        
/// 声明CaseInsensitiveComparer类对象,
ListView点击列标题自动排序功能        
/// 参见ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemCollectionsCaseInsensitiveComparerClassTopic.htm
ListView点击列标题自动排序功能        
/// </summary>

ListView点击列标题自动排序功能        private CaseInsensitiveComparer ObjectCompare;
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能        
/**/
ListView点击列标题自动排序功能        
/// <summary>
ListView点击列标题自动排序功能        
/// 构造函数
ListView点击列标题自动排序功能        
/// </summary>

ListView点击列标题自动排序功能        public ListViewColumnSorter()
ListView点击列标题自动排序功能        
{
ListView点击列标题自动排序功能            
// 默认按第一列排序
ListView点击列标题自动排序功能
            ColumnToSort = 0;
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能            
// 排序方式为不排序
ListView点击列标题自动排序功能
            OrderOfSort = SortOrder.None;
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能            
// 初始化CaseInsensitiveComparer类对象
ListView点击列标题自动排序功能
            ObjectCompare = new CaseInsensitiveComparer();
ListView点击列标题自动排序功能        }

ListView点击列标题自动排序功能
ListView点击列标题自动排序功能        
/**/
ListView点击列标题自动排序功能        
/// <summary>
ListView点击列标题自动排序功能        
/// 重写IComparer接口.
ListView点击列标题自动排序功能        
/// </summary>
ListView点击列标题自动排序功能        
/// <param name="x">要比较的第一个对象</param>
ListView点击列标题自动排序功能        
/// <param name="y">要比较的第二个对象</param>
ListView点击列标题自动排序功能        
/// <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>

ListView点击列标题自动排序功能        public int Compare(object x, object y)
ListView点击列标题自动排序功能        
{
ListView点击列标题自动排序功能            
int compareResult;
ListView点击列标题自动排序功能            ListViewItem listviewX, listviewY;
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能            
// 将比较对象转换为ListViewItem对象
ListView点击列标题自动排序功能
            listviewX = (ListViewItem)x;
ListView点击列标题自动排序功能            listviewY 
= (ListViewItem)y;
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能            
// 比较
ListView点击列标题自动排序功能
            compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
ListView点击列标题自动排序功能
ListView点击列标题自动排序功能            
// 根据上面的比较结果返回正确的比较结果
ListView点击列标题自动排序功能
            if (OrderOfSort == SortOrder.Ascending)
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                
// 因为是正序排序,所以直接返回结果
ListView点击列标题自动排序功能
                return compareResult;
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能            
else if (OrderOfSort == SortOrder.Descending)
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                
// 如果是反序排序,所以要取负值再返回
ListView点击列标题自动排序功能
                return (-compareResult);
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能            
else
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                
// 如果相等返回0
ListView点击列标题自动排序功能
                return 0;
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能        }

ListView点击列标题自动排序功能
ListView点击列标题自动排序功能        
/**/
ListView点击列标题自动排序功能        
/// <summary>
ListView点击列标题自动排序功能        
/// 获取或设置按照哪一列排序.
ListView点击列标题自动排序功能        
/// </summary>

ListView点击列标题自动排序功能        public int SortColumn
ListView点击列标题自动排序功能        
{
ListView点击列标题自动排序功能            
set
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                ColumnToSort 
= value;
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能            
get
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                
return ColumnToSort;
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能        }

ListView点击列标题自动排序功能
ListView点击列标题自动排序功能        
/**/
ListView点击列标题自动排序功能        
/// <summary>
ListView点击列标题自动排序功能        
/// 获取或设置排序方式.
ListView点击列标题自动排序功能        
/// </summary>

ListView点击列标题自动排序功能        public SortOrder Order
ListView点击列标题自动排序功能        
{
ListView点击列标题自动排序功能            
set
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                OrderOfSort 
= value;
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能            
get
ListView点击列标题自动排序功能            
{
ListView点击列标题自动排序功能                
return OrderOfSort;
ListView点击列标题自动排序功能            }

ListView点击列标题自动排序功能        }

ListView点击列标题自动排序功能    }

ListView点击列标题自动排序功能}

 

前台调用

    this.listView1.ListViewItemSorter = new Common.ListViewColumnSorter();
    this.listView1.ColumnClick += new ColumnClickEventHandler(Common.ListViewHelper.ListView_ColumnClick);

 

你可能感兴趣的:(ListView)