高手帮看看,着手DataTable排序的问题
不晓得怎么对表里面的Rows排序,排序后的Rows仍然放在原表中
我想用Array.Sort来对tab.Rows排序,但不知道Array.Sort怎么用呀
问题点数:20、回复次数:13Top
1 楼gpyrbn(不想饿死)回复于 2006-06-03 08:46:29 得分 0
对啊,我早上也遇到了同样的问题,好象datatable没有 sort这个方法啊!有高手来帮一起解决吧,顶起来!Top
2 楼CCC00(CCC)回复于 2006-06-03 09:08:39 得分 0
刚才自己写了一个方法,跟大家共享一下
public static DataTable SortTable(DataTable source,string filterExpression,string sort)
{
Array newRows=Array.CreateInstance(typeof(System.Data.DataRow),source.Rows.Count);
source.Select(filterExpression,sort).CopyTo(newRows,0);
DataTable tab=source.Clone();
tab.TableName=source.TableName ;
foreach(DataRow row in newRows)
{
tab.ImportRow(row);
}
return tab;
}
但总觉得这不是最佳的解决方法呀Top
3 楼CCC00(CCC)回复于 2006-06-03 09:09:27 得分 0
如果哪位高手有更好的解决方法,希望共享一下Top
4 楼redmoonmoon(阿卓)回复于 2006-06-03 09:39:55 得分 0
UPTop
5 楼CCC00(CCC)回复于 2006-06-03 10:01:53 得分 0
高手在哪里Top
6 楼allanli(若尘)回复于 2006-06-03 10:17:30 得分 0
DataTable没有排序,视图才能排序
用DataTable.DefaultView.SortTop
7 楼CCC00(CCC)回复于 2006-06-03 10:23:56 得分 0
视图排序后不能反映到原Table中呀Top
8 楼allanli(若尘)回复于 2006-06-03 10:26:17 得分 0
可以啊
例如你想获取视图中第3行对应的DataTable中的行
那么用DataTable.DefaultView(2).Row就可以了Top
9 楼CCC00(CCC)回复于 2006-06-03 11:24:10 得分 0
那 在DataSet里面访问的也是一样的
如
dataSet.Table[0].Rows[0]和DataTable.DefaultView(2).Row是一样的吗Top
10 楼CCC00(CCC)回复于 2006-06-03 18:29:23 得分 0
UPTop
11 楼tonny008()回复于 2006-06-03 20:59:54 得分 0
用视图不是很好吗?为什么一定要改table呢,你其他用table的都改为视图就可以拉。Top
12 楼allanli(若尘)回复于 2006-06-03 22:25:42 得分 0
一旦你的视图设置了排序条件,那么你就只能通过视图定位DataTable,而不能通过DataTable定位视图.例如如果视图设置了排序,那么在排序条件下你想访问视图中第三行对应的DataTable中的行,可以通过DataTable.DefaultView(2).Row,但你就没有办法知道DataTable中的第三行DataTable.Rows(2)对应DataTable.DefaultView中的第几行了.所以一旦你使用视图,那么你的所有操作都必须建立在视图上.Top
13 楼CCC00(CCC)回复于 2006-06-04 13:43:46 得分 0
但我在几个表中建了关系,用视图话,关系是不是就失效了,因为关系是在DataSet上建立的Top




