DataView很遗憾的一点是没有提供选择,Top N行的功能,因此只能通过自定义方法实现,通过循环一行一行的读取,还可以使用checkbox进行选择多行
后来还是解决了,存储DataView很不错的方法喔,看似简单其实也有几个地方值得学习的:
public DataView SelectView(string NamePara,int TopValue)
{
SqlCode Scc = new SqlCode();
DataView Dview = Scc.SelectSortBooks().DefaultView;
string FilterR ="Name='" + NamePara + "'";
Dview.RowFilter = FilterR;
DataTable Dtable = Dview.Table.Clone(); //克隆DataTable 的结构,包括所有DataTable 架构和约束。
for (int i = 0; i <Dview.Count; i++)
{
if (i >= TopValue)
{
break;
}
Dtable.ImportRow(Dview[i].Row); //取前TopValue行,其他的不添加至DataTable
}
return new DataView(Dtable);
}
这里实现了将一个DataView经过RowFilter处理后,再获取前N行,这里开始的DataView已经按降序排列好了。分析代码:先获得DataView的表架构用 Dview.Table,然后再克隆得到跟Dview相同的表架构和约束(包括列明,键....)。然后将整个Dview的行数循环,取你所要求的行数,这里是TopValue行,只需从0到TopValue-1行复制到我得到的克隆表里,其他的跳出,得到这个表之后,从而得到这个表的DataView,存储DataTable中的DataView!!!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。