none
如何將datagridview中某一欄的資料,依數值大小排序 RRS feed

  • 問題

  • 請教各位:

                  如果想將datagridview中某一欄的資料,依數值大小排序,該如何做呢?

                  目前試過無論是sortmode 用Automatic or Programmatic

                  都會將資料以字串比較.

    謝謝

    2008年4月10日 上午 03:53

解答

  • 可能從資料來源來改才有效果?


    DataTable dt = new DataTable();
    dt.Columns.Add("C1", typeof (string));
     
    // 比較註解前後的效果
    dt.Columns[0].DataType = typeof (int);  
     
    dt.Rows.Add("1");
    dt.Rows.Add("3");
    dt.Rows.Add("2");
    dt.Rows.Add("10");
    dt.Rows.Add("20");
    dt.Rows.Add("1");
    dt.Rows.Add("12");
     
    dataGridView1.DataSource = dt;


    2008年4月11日 下午 12:42

所有回覆

  • HI,

     

    您可以設定欄位的型態後再試試看:

     

    DataGridView物件.Columns(欄位編號).ValueType = GetType(Integer)

     

    tihs

    2008年4月10日 上午 06:30
  •           謝謝您的指點,我改寫如下,但還是被當成字串排序, 請教是否有錯誤?

                newColumn.ValueType = GetType(Single)

                DGV2.Sort(newColumn, direction)

    2008年4月11日 上午 04:00
  • 可能從資料來源來改才有效果?


    DataTable dt = new DataTable();
    dt.Columns.Add("C1", typeof (string));
     
    // 比較註解前後的效果
    dt.Columns[0].DataType = typeof (int);  
     
    dt.Rows.Add("1");
    dt.Rows.Add("3");
    dt.Rows.Add("2");
    dt.Rows.Add("10");
    dt.Rows.Add("20");
    dt.Rows.Add("1");
    dt.Rows.Add("12");
     
    dataGridView1.DataSource = dt;


    2008年4月11日 下午 12:42
  • HI,

     

    請問您有將欄位的SortMode改成Programmatic嗎?

     

    tihs

    2008年4月11日 下午 01:42
  • 欄位的SortMode改成Programmatic嗎?  =>有,但還是不行,

    不過我將該欄位type改成single

    並且將輸入值在輸入時即以single 的type 輸入後 就可以了.

    謝謝您的建議

     

    2008年4月16日 上午 08:31
  • Thanks

     

    2008年4月16日 上午 08:32