同时对两列进行排列 listview

//初始化里面s
            ListViewColumnSorter lic1 = new ListViewColumnSorter();
            lic1.SortColumn = 2;
            this.listView1.ListViewItemSorter = lic1;

         

            //listView1.Sort();

 public class ListViewColumnSorter : IComparer
    {
        private int ColumnToSort;
        private SortOrder OrderOfSort;
        private readonly CaseInsensitiveComparer ObjectCompare;

        public ListViewColumnSorter()
        {
            ColumnToSort = 0;
            OrderOfSort = SortOrder.Descending;
            ObjectCompare = new CaseInsensitiveComparer();
        }

        public int Compare(object x, object y)
        {
            ListViewItem listviewX = (ListViewItem)x;
            ListViewItem listviewY = (ListViewItem)y;

            int compareResult = ObjectCompare.Compare(Convert.ToDouble(listviewX.SubItems[ColumnToSort].Text),
                                                      Convert.ToDouble(listviewY.SubItems[ColumnToSort].Text));
            if (compareResult == 0)
            {
                compareResult = -ObjectCompare.Compare(Convert.ToDouble(listviewX.SubItems[ColumnToSort+1].Text),
                                                      Convert.ToDouble(listviewY.SubItems[ColumnToSort+1].Text));
            }

            if (OrderOfSort == SortOrder.Ascending)
                return (-compareResult);
            if (OrderOfSort == SortOrder.Descending)
                return compareResult;
            return 0;
        }

        public int SortColumn
        {
            get { return ColumnToSort; }
            set { ColumnToSort = value; }
        }

        public SortOrder Order
        {
            get { return OrderOfSort; }
            set { OrderOfSort = value; }
        }
    }

posted on 2011-05-19 10:36  缘来  阅读(615)  评论(0)    收藏  举报

导航