在同一个页面有个DataTable,有好几个地方要用,使用那个对象保存好呢,有几千条数据用viewstate的话,页面体积会变大
用session的话,占服务器内存,还有那些对象可以实现呢,要在页面回发时,这个datatable也能保存就在同一个页面

解决方案 »

  1.   

    你说是cache吗,这个都是全局的,更加不行了,开2个页面的话不是被覆盖了
      

  2.   

    怕被覆盖就给它们定义不一样的 Key
      

  3.   

    楼主的思路有问题,如果是这样的话不是有无数的DataTable要保存。哪个页面要用就去数据库读出这个DataTable,真的很频繁用到的话才考虑用缓存
      

  4.   

    你这个DataTable 是怎么来的 
    这个页面的DataTable 是怎么来的  那就让 应用它的地方也怎么来把
      

  5.   

    存在缓存里面,我给你一个创建缓存和清空缓存的方法,当你不想使用这个缓存,或者对数据进行了增删改,那么你首先要清空这个缓存,然后再创建缓存。缓存最大的好处就是在初次加载的时候慢一点,以后就变的很快了,这也是许多人使用缓存的原因。它可以很好的提高性能。
            /// <summary>
            /// 添加Cache缓存
            /// </summary>
            /// <param name="key">所添加缓存的数据库表名</param>
            /// <param name="connstr">连接字符串</param>
            /// <returns>DataTable</returns>
            public static DataTable Get(string key,string connstr)
            {
                if (HttpContext.Current.Cache[key] == null)
                {
                    SqlConnection conn = new SqlConnection(connstr);
                    conn.Open();
                    SqlDataAdapter sda = new SqlDataAdapter("select * from "+key,conn);
                    DataTable dt = new DataTable();
                    sda.Fill(dt);
                    conn.Close();              
                   HttpContext.Current.Cache.Add(key, dt, null, DateTime.Now.AddHours(1), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, null);
                }            return HttpContext.Current.Cache[key] as DataTable;
            }        /// <summary>
            /// 移除Cache缓存
            /// </summary>
            /// <param name="key">所移除的数据库表名</param>
            public static void Remove(string key)
            {
                if (HttpContext.Current.Cache[key] != null)
                {
                    HttpContext.Current.Cache.Remove(key);
                }
            }