datagrid 怎样对一个列按数字大小排序啊?我的一个 datatable ,从 csv 读取数据后,绑定到 datagrid 显示出来,可是当我点 datagrid 的 header 排序时,数字列总是按照字符的比较方式排序,比如:1
111
2
3
6
我希望能实现按照数字大小排序:
1
2
3
6
111
请高人指点。

解决方案 »

  1.   

    order by 列 desc/asc( int型 )
    要是字符型的,就不行了
      

  2.   

    从 csv 读出来塞到 datatable 的时候,已经判断了,如果是数字就塞整型,否则就塞字符串类型。DataRow dr = dt.NewRow();Regex RegNum = new Regex( Common.m_FindNumRegexStr );
    Regex RegDec = new Regex( Common.m_FindDecimalNumRegexStr );
    for (int icol=0; icol<item.Length; icol++){
    if (RegNum.IsMatch(item[icol].Trim()))
    dr[icol] = long.Parse(item[icol].Trim());
    else if (RegDec.IsMatch(item[icol].Trim()))
    dr[icol] = double.Parse(item[icol].Trim());
    else
    dr[icol] = item[icol].Trim();
    }
    dt.Rows.Add(dr);
    但是 datagrid 上面点击 header 后,总是按照字符串排序呀。怎么弄?
      

  3.   

    你只需要在从 csv 读出来塞到 datatable之前将datatable对应的列的数据类型设置为数值型可以了。或者绑定后
    datatable.Columns[i].DataType = System.Type.GetType(System.TypeCode.Double.ToString());//其中i是你要当做数字的那一列,不过,你要保证它都是数字哟
      

  4.   

    建立个DATAVIEW,然后按条件塞!