一张表其中有一列是排序序号,这张表的内容显示在一个treeview上,然后根据排序那一列进行排序,这个怎么做啊

解决方案 »

  1.   

    数据库查出来order by你那一列,然后绑定到treeview上
      

  2.   


        #region 排序  IComparer接口    /// <summary>
        /// 排序  IComparer接口
        /// </summary>
        class ListViewColumnSorter : IComparer
        {
            private int ColumnToSort;// 指定按照哪个列排序      
            private SortOrder OrderOfSort;// 指定排序的方式               
            private CaseInsensitiveComparer ObjectCompare;// 声明CaseInsensitiveComparer类对象,
            public ListViewColumnSorter()// 构造函数
            {
                ColumnToSort = 0;// 默认按第一列排序            
                OrderOfSort = SortOrder.None;// 排序方式为不排序            
                ObjectCompare = new CaseInsensitiveComparer();// 初始化CaseInsensitiveComparer类对象
            }
            // 重写IComparer接口.        
            // <returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
            public int Compare(object x, object y)
            {
                int compareResult;
                ListViewItem listviewX, listviewY;
                // 将比较对象转换为ListViewItem对象
                listviewX = (ListViewItem)x;
                listviewY = (ListViewItem)y;
                // 比较
                try
                {
                    compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);                // 根据上面的比较结果返回正确的比较结果
                    if (OrderOfSort == SortOrder.Ascending)
                    {   // 因为是正序排序,所以直接返回结果
                        return compareResult;
                    }
                    else if (OrderOfSort == SortOrder.Descending)
                    {  // 如果是反序排序,所以要取负值再返回
                        return (-compareResult);
                    }
                    else
                    {
                        // 如果相等返回0
                        return 0;
                    }
                }
                catch {
                    return 0;
                }        }
            /// 获取或设置按照哪一列排序.        
            public int SortColumn
            {
                set
                {
                    ColumnToSort = value;
                }
                get
                {
                    return ColumnToSort;
                }
            }
            /// 获取或设置排序方式.    
            public SortOrder Order
            {
                set
                {
                    OrderOfSort = value;
                }
                get
                {
                    return OrderOfSort;
                }
            }
        }
        #endregion        ListViewColumnSorter lsvColumnSorter;//序列号排序  声明            //在_Load里初始化
                lsvColumnSorter = new ListViewColumnSorter();
                this.listView2.ListViewItemSorter = lsvColumnSorter;//进行排序
    private void listView2_ColumnClick(object sender, ColumnClickEventArgs e)
            {
                // 检查点击的列是不是现在的排序列.
                if (e.Column == lsvColumnSorter.SortColumn)
                {
                    // 重新设置此列的排序方法.
                    if (lsvColumnSorter.Order == SortOrder.Ascending)
                    {
                        lsvColumnSorter.Order = SortOrder.Descending;
                        this.listView3.Columns[e.Column].ImageIndex = 1;
                    }
                    else
                    {
                        lsvColumnSorter.Order = SortOrder.Ascending;
                        this.listView2.Columns[e.Column].ImageIndex = 0;
                    }
                }
                else
                {
                    // 设置排序列,默认为正向排序
                    lsvColumnSorter.SortColumn = e.Column;
                    lsvColumnSorter.Order = SortOrder.Ascending;
                    this.listView2.Columns[e.Column].ImageIndex = 0;
                }
                // 用新的排序方法对ListView排序
                this.listView2.Sort();
            }