近来在做项目的进修,碰上这样的一个问题,从XML文件里读取的内容到一个dataview内,比如设为变量dv
在这里数据视图里有个字段,如有5,6,7,8,9,10,11,12,13,14
现在要对这些记录以此字段的数值大小排列,如以升序排,
dv.Sort="字段名 asc";
结果显示顺序为:10,11,12,13,14,5,6,7,8,9
它是以字符串排序,郁闷了我好一会,后来是这样来解决的,就是新加一个列,来设置为数字类型,
代码如下,从中复制过来的,
dv.RowFilter = filterStr;
DataTable dt = dv.ToTable();
dt.Columns.Add("sortD", System.Type.GetType("System.Int32"));
dt.Columns["sortD"].Expression = "Convert(dateD, 'System.Int32') ";
dt.Columns.Add("sortM", System.Type.GetType("System.Int32"));
dt.Columns["sortM"].Expression = "Convert(dateM, 'System.Int32') ";
dv = dt.DefaultView;
dv.Sort = " dateY desc,sortM desc,sortD desc, id desc";
dt = dv.ToTable();
dv.Dispose();
这样就解决了问题,
供遇到同样问题的人来共享一下,
其实就是能过。
dt.Columns.Add("sortD", System.Type.GetType("System.Int32"));
dt.Columns["sortD"].Expression = "Convert(dateD, 'System.Int32') ";
给表添加一列sortD,然后以sortD来排就行了,这个sortD就是以数字的字段。,