VS2005 ,VB.NET,用DataGridView,BindingSource绑定数据源,现在想点击列标题进行升序降序排列。如何实现?

解决方案 »

  1.   

    JF .
    AutoSorting  属性设置为TRUE。另外标题要可点击的
      

  2.   

    2005里没有看到那个属性
    只有sortmode ,我选了Automatic 
    是选这个吗,我无法手动点击排序
      

  3.   

    this.Column.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
    Column是列的对象
      

  4.   

    应该没问题的,lz再仔细看看你的代码。
    如果实在不行就在dataGridView_ColumnHeaderMouseClick事件自己实现排序
    那个事件的e.ColumnIndex应该是你点的列号,通过列号获得你的列名字排序代码:
    DataTable d = dvtodt(dataGridView3);
    d.DefaultView.Sort = "aa ASC";//aa是列标题的text,ASC代表升序(desc降序)
    dataGridView1.Columns.Clear();
    dataGridView1.DataSource = d;
    按列aa进行排序
    //将DataGridView 内容读进datatable
     public DataTable dvtodt(DataGridView dv)
            {
                DataTable dt = new DataTable();
                DataColumn dc;
                for (int i = 0; i < dv.Columns.Count; i++)
                {
                    dc = new DataColumn();
                    dc.ColumnName = dv.Columns[i].HeaderText.ToString();
                    dt.Columns.Add(dc);
                }
                for (int j = 0; j < dv.Rows.Count - 1; j++)
                {
                    DataRow dr = dt.NewRow();
                    for (int x = 0; x < dv.Columns.Count; x++)
                    {
                        dr[x] = dv.Rows[j].Cells[x].Value;
                    }
                    dt.Rows.Add(dr);
                }
                return dt;
            }