将DataTable加入缓存string sql = "select id,caid,filetitle,filetype,filename,pubdate from web_repository where subsiteid='root' and state='4'";
        OracleDataAdapter adapter = new OracleDataAdapter(sql, ConfigurationManager.AppSettings["ERP"]);        DataSet ds = new DataSet();        adapter.Fill(ds, "web_repository");
        HttpContext.Current.Cache["web"] = ds.Tables["web_repository"];从缓存中取出DataTable ds = (DataTable)HttpContext.Current.Cache.Get("web");
DataView dv = ds1.DefaultView;
dv.RowFilter = "caid='002-001'";可是过滤出来的数据,caid却不仅仅是002-001的,而且我发现,假如数据库中只有1条caid=002-001的数据,那它过滤出来的结果也只有1条,但这条数据并不是caid=002-001的,而是在cache中的DataTable的第一条数据,无论用cache存dataset,datatable,dataview都是这个毛病,从vs2003到vs2005都是这样,这是为什么啊,到底哪里有错啊,出了300分了,还是没人解答么?!我qq24954254,在线等!!!!

解决方案 »

  1.   

    找到原因了,不知道为什么,从cache中直接取出来的DataSet,DataTable,DataView可以进行filter或者sort,而且记录条数也是对的,但是取出来的记录是cache中缓存的Data从第一条到第N条,所以感觉取出来的东西驴头不对马嘴,重新建一个DataTable,把从cache取出来的datatable复制一次就好了,呵呵。
      

  2.   

    楼主这是...
    可见很急,
    老实说我不知道你这么取有到底为啥错了
    因为之前用.net1.1做过个项目也从web service也是在cache存取过datatable没有问题
      

  3.   

    我原来已经登过了啊,
    给后面的人留点东西吧。
    用datarowview吧。