DataGridView已经绑定DataSource,并且有一列数值列,我想将它进行数值排列,应该如何做?

解决方案 »

  1.   

    DataGridView已经绑定DataSource,如果是通过bindingsource绑定的话,
    bindingsource bg=new bindingsource();
    bg.DataSource=....;
    DataGridView.DataGridView=bg;bg.sort="排序字段 asc";
      

  2.   

    我做过,可以使用datatable来当datagridview的数据源。而datatable的配置是相当灵活的
      

  3.   


    你可以用SQL语句 最方便了
      

  4.   

     private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
            {
                if (e.ColumnIndex == 0)
                {
                    if (this.dataGridView1.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection == System.Windows.Forms.SortOrder.Ascending)
                    {
                        this.order = System.Windows.Forms.SortOrder.Descending;
                    }
                 
                }
                    }
      

  5.   

    还有一种办法:
    如果是通过bindingsource绑定的话, 
    你那列类型一定要是数据类型的, DataGridView里面也要数值类型的,这样应该可以排序
    如果你从数据库取出来存放的就是字符类型的话,它当然按字符排序啦
      

  6.   


    如何对DataTable进行排序哪?
      

  7.   


    this.order是什么,我这里怎么没有?
      

  8.   

    private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 

      if (e.ColumnIndex == 0) 
      {
      }
    }
    经过这个函数我感觉排序是成功的,好像是控件又执行了一次排序,所以排序就又变了,怎么解决这个问题?
      

  9.   


    少贴了东西。form 定义个以order 变量。
    System.Windows.Forms.SortOrder order;
    构造函数初始化:
    order = System.Windows.Forms.SortOrder.Ascending;
    在给 dataGridView1绑定数据的地方:
    this.dataGridView1.Columns[0].HeaderCell.SortGlyphDirection = order;