zoukankan      html  css  js  c++  java
  • ListView 日期,数字,字符排序

    在http://blog.csdn.net/spkl1/archive/2007/01/09/1478400.aspx的基础上有所改动!
    可以,将多个listView同时关联到这一个事件,判断是那个listView的排序,再执行排序!
    如有侵权,请与我联系!


            private void listView_ColumnClick(object sender, ColumnClickEventArgs e)
            {
                
    int sortColumn = e.Column;
                ListView listView 
    = (ListView)sender;

                
    if (listView.Name == "listView2")
                {
                    
    if (listView2.Sorting == SortOrder.Ascending)
                        listView2.Sorting 
    = SortOrder.Descending;
                    
    else
                        listView2.Sorting 
    = SortOrder.Ascending;

                    
    this.listView2.ListViewItemSorter = new ListViewItemComparer(e.Column, listView2.Sorting);
                }
                
    else if (listView.Name == "listView3")
                {
                    
    if (listView3.Sorting == SortOrder.Ascending)
                        listView3.Sorting 
    = SortOrder.Descending;
                    
    else
                        listView3.Sorting 
    = SortOrder.Ascending;

                    
    this.listView3.ListViewItemSorter = new ListViewItemComparer(e.Column, listView3.Sorting);
                }
                
    else if (listView.Name == "listView4")
                {
                    
    if (listView4.Sorting == SortOrder.Ascending)
                        listView4.Sorting 
    = SortOrder.Descending;
                    
    else
                        listView4.Sorting 
    = SortOrder.Ascending;

                    
    this.listView4.ListViewItemSorter = new ListViewItemComparer(e.Column, listView4.Sorting);
                }
                
    else if (listView.Name == "listView5")
                {
                    
    if (listView5.Sorting == SortOrder.Ascending)
                        listView5.Sorting 
    = SortOrder.Descending;
                    
    else
                        listView5.Sorting 
    = SortOrder.Ascending;

                    
    this.listView5.ListViewItemSorter = new ListViewItemComparer(e.Column, listView5.Sorting);
                }
            }

            
    class ListViewItemComparer : System.Collections.IComparer
            {
                
    private int col;
                
    private SortOrder order;
                
    public ListViewItemComparer()
                {
                    col 
    = 0;
                    order 
    = SortOrder.Ascending;
                }
                
    public ListViewItemComparer(int column, SortOrder order)
                {
                    col 
    = column;
                    
    this.order = order;
                }
                
    public int Compare(object x, object y)
                {
                    
    int returnVal;
                    
    decimal w;
                    DateTime r;
                    
    bool k = Decimal.TryParse(((ListViewItem)x).SubItems[col].Text, out w);
                    
    bool s = DateTime.TryParse(((ListViewItem)x).SubItems[col].Text, out r);
                    
    if (k == true && order != SortOrder.Descending)//数字正排序
                    {
                        Decimal k1 
    = Int32.Parse(((ListViewItem)x).SubItems[col].Text);
                        Decimal k2 
    = Int32.Parse(((ListViewItem)y).SubItems[col].Text);
                        
    if (k2 > k1)
                            returnVal 
    = -1;
                        
    if (k2 < k1)
                            returnVal 
    = 1;
                        
    else
                            returnVal 
    = 0;
                    }
                    
    else
                    {
                        
    if (s == true)//时间排序
                        {
                            System.DateTime firstDate 
    = DateTime.Parse(((ListViewItem)x).SubItems[col].Text);
                            System.DateTime secondDate 
    = DateTime.Parse(((ListViewItem)y).SubItems[col].Text);
                            returnVal 
    = DateTime.Compare(firstDate, secondDate);
                        }
                        
    else//字符排序
                        {
                            returnVal 
    = String.Compare(((ListViewItem)x).SubItems[col].Text,
                                        ((ListViewItem)y).SubItems[col].Text);
                        }
                    }

                    
    if (order == SortOrder.Descending)
                    {
                        
    if (k == true)//数字倒排序
                        {
                            System.Int32 k3 
    = Int32.Parse(((ListViewItem)x).SubItems[col].Text);
                            System.Int32 k4 
    = Int32.Parse(((ListViewItem)y).SubItems[col].Text);
                            
    if (k3 > k4)
                                returnVal 
    = 1;
                            
    if (k3 < k4)
                                returnVal 
    = -1;
                            
    else
                                returnVal 
    = 0;
                        }
                        returnVal 
    *= -1;
                    }
                    
    return returnVal;
                }
            }
  • 相关阅读:
    OC与JavaScript的交互
    号码运商判断
    iOS 适配https(AFNetworking3.0为例)
    UIlabel的字体自适应属性
    iOS10遇到有推送的Demo真机报错的解决
    UIView的setNeedsDisplay和setNeedsLayout
    ubuntu---设置路径时,profile和bashrc区别
    python---类的定义和使用
    ubuntu---鼠标变成空心十字架
    python--- 遍历一个图片文件夹 并 输出到txt文件
  • 原文地址:https://www.cnblogs.com/adaiye/p/886486.html
Copyright © 2011-2022 走看看