各位高手你们好:
    近日做项目时发现了一个关于RowFilter的问题,举例说明:
    1.有一已定义好的数据集比如:Session["dv"]中存储的是一个DataView数据集;
    2.取得数据集
      DataView dvFilter= (DataView)Session["dv"];
      dvFilter.RowFilter = Session["FilterString"];
      this.DataGrid1.DataSource = dvFilter;
      this.DataGrid1.DataBind();   但在再次访问Session["dv"]中的数据集的时候得到的结果却是刚才被筛选后的结果.但是刚才筛选后的结果并未存入状态中.不知为何这样,请高手给予指教!!

解决方案 »

  1.   

    DataView本身就是以RowFilter来过滤并显示数据的,它的记录的多少和RowFilter是相关的.
    你记录这个DataView不如只记录RowFilter,如果你只想把过滤后的数据保存到一个变量中,那么你可以使用如下的方法来得到过滤后的数据,比如:DataTable tmpTable = dataView.ToTable();这里按DataView中的显示的记录生成了一个新的表这样你就可以得到只有过虑后的数据的.
      

  2.   

    你如果使用的是VS2003,DataView没有ToTable这个方法,最冬日的做法就是直接对RowFilter这个字符串控制.一个DataView实际上并不保存任何一行数据,它只是一个DataTable的"视图",它所显示出的数据正是在RowFilter的条件下在DataTable中的记录,而DataView只是一个定义上的概念!
      

  3.   

    DataView dvFilter= (DataView)Session["dv"];
    dvFilter就是Session["dv"]的引用,还用你保存吗?都是一个东西