缓存Gridview中1万多条的数据怎么实现????是用内置对象吗,Session吗,???  代码要怎么写

解决方案 »

  1.   

        public DataTable  CacheDataTable(string cacheKey, string StrSql)
        {
            Cache cache = System.Web.HttpContext.Current.Cache;
            object cacheItem = cache.Get(cacheKey) as DataTable;
            if (cacheItem == null)
            {
                DataSet ds = new DataSet();
                //这里写读取数据的代码
                cacheItem = ds.Tables[0];
                cache.Insert(cacheKey, cacheItem,  null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(10));
            }
            return (DataTable)cacheItem;
        }
      

  2.   

    大哥!一万多数据,这还拿来缓存,建议另外考虑程序确实需要不
    虽然Cache可以
      

  3.   

    请教::其中strSql语句用在哪啊??
      

  4.   

    我这边用的GridView是第三方控件,想实现点击表头要能排序数据,我设置Gridview自带的排序AllowSort="True",点击表头排序,数据全都没了................
      

  5.   

    beyond_me21  
    老大,我这边的Cache cache  属性后面跟不了Get         用Cache可以直接跟,   string StrSql语句用在哪` 
    Cache缓存不太懂`  能不能讲再清楚点,` 怎么调CacheDataTable函数
      

  6.   

    stringsql这个是让你自己写读数据的,如果缓存时间到期了就直接从数据库中读,否则直接从缓存中取数据,不要告诉我你读数据不会吧。你也可以换成其它参数也可以啊,我只是给你一个例子Cache cache 属性后面跟不了Get
    你引用了using System.Web.Caching没有?
      

  7.   


    你有经常查询1万条数据然后返回给界面层处理的代码吗?没有就根本不应该去缓存1万条数据。比如经常要查询某个用户的信息,那么应该把查询过的用户的信息缓存起来,然后就直接使用查询过的结果。而不是前台刚刚要查询1个用户信息时就去缓存所有用户的信息。缓存的单元通常是每一个业务逻辑查询功能!比如要查询某个机构在2个月内买过的所有股票的最近3个交易日的价格的变动的最高和最低值,那么这个查询得到的是一个报告。这个查询如果可能在网站中复用(因为关注这机构的用户很多,它们可能从不同的地方同时访问这个查询),就应该把查询结果(内存中的报表数据源需绑定的强类型数据集合)缓存起来,下一次数据源再调用查询业务逻辑功能时,业务逻辑处理方法就会首先自动将查询参数生成key并且到缓存中去看看有没有数据,如果没有才会去访问数据库,访问完会将结果按照key为关键字保存到缓存系统中供下次复用。所以一个缓存机制是非常简单的,只要开发一次,然后每一个业务逻辑功能只要调用缓存机制的2、3个api方法就行了。当我们要暂时停掉缓存,只要为web.config中的参数设置一下,即刻生效。
      

  8.   

    看看#6楼就知道,楼主要提高的是开发效率(早点让那个第三方的GridView正常工作),而不是运行效率,楼主说的“缓存”不是“缓存”,只是借用了“缓存”这个词。因此,所以正儿八经讨论“缓存”的内容其实都是文不对题。建议楼主好好看一下那个第三方GridView的使用手册,研究它是如何排序的,这个控件不一定要求你把整个表的数据加载进来,它也许会触发一个排序事件,你可以在这个事件里依据指定的排序表达式重新查询。使用“缓存”把整个表放到内存中并不是一个好办法。
      

  9.   

    获取数据代码就是你用sql的地方, ds 他不是没有给你么~ 要你自己写的 ~
      

  10.   


    public void DlBind()   //初始化绑定
    {
          DataSet ds = (DataSet)Cache["缓存名称"];
          StringBuilder str = new StringBuilder();
          str.Append("select top 8 * from tb where ......");//sql 语句
           if (ds == null)
          {
              DataSet cds = Base.GetDataSet(str.ToString(), "t1");//通过方法获得Dataset
              //存入Cache
              HttpContext.Current.Cache.Insert("缓存名称", cds, null, DateTime.Now.AddHours(4), System.Web.Caching.Cache.NoSlidingExpiration);
              ......
          }
    }