日期:2014-05-18  浏览次数:20408 次

(高手帮忙,高分相赠)一个上关于RowFilter的问题
各位高手你们好:
        近日做项目时发现了一个关于RowFilter的问题,举例说明:
        1.有一已定义好的数据集比如:Session[ "dv "]中存储的是一个DataView数据集;
        2.取得数据集
            DataView   dvFilter=   (DataView)Session[ "dv "];
            dvFilter.RowFilter   =   Session[ "FilterString "];
            this.DataGrid1.DataSource   =   dvFilter;
            this.DataGrid1.DataBind();

      但在再次访问Session[ "dv "]中的数据集的时候得到的结果却是刚才被筛选后的结果.但是刚才筛选后的结果并未存入状态中.不知为何这样,请高手给予指教!!

------解决方案--------------------
DataView本身就是以RowFilter来过滤并显示数据的,它的记录的多少和RowFilter是相关的.
你记录这个DataView不如只记录RowFilter,

如果你只想把过滤后的数据保存到一个变量中,那么你可以使用如下的方法来得到过滤后的数据,比如:

DataTable tmpTable = dataView.ToTable();这里按DataView中的显示的记录生成了一个新的表

这样你就可以得到只有过虑后的数据的.
------解决方案--------------------
你如果使用的是VS2003,DataView没有ToTable这个方法,最冬日的做法就是直接对RowFilter这个字符串控制.

一个DataView实际上并不保存任何一行数据,它只是一个DataTable的"视图",它所显示出的数据正是在RowFilter的条件下在DataTable中的记录,而DataView只是一个定义上的概念!
------解决方案--------------------
DataView dvFilter= (DataView)Session[ "dv "];
dvFilter就是Session[ "dv "]的引用,还用你保存吗?都是一个东西