我頁面從數據庫取300條,用DataGrid顯示,並分頁,用頁面緩存分頁顯示不了,所以想把DataSet或DataTable寫入緩存,刷新頁面就直接從緩存裏取,每過30分鍾刷新一次緩存寫入新數據.

解决方案 »

  1.   

    我要C#的WebForm代碼,別的看了難理解
      

  2.   

    在web应用启动时开起一个线程,每个30分钟来从数据库中取数据,并且更新到应用程序变量中,当有页面要请求数据时,直接从应用程序变量中取数据.
      

  3.   

    暈,不要光說不練啊,說得再詳細偶也寫不出代碼,好像聽說Global.asax裏可以將DataSet寫入緩存
      

  4.   

    参见 Timer类
    设置时间间隔
      

  5.   

    //每過30分鍾刷新一次緩存寫入新數據
    Cache.Insert("CachedDataSet", myDataSet, null, 
    DateTime.Now.AddMinutes(30), TimeSpan.Zero);
      

  6.   

    //一般的写法如下
    DataSet myDataSet = (DataSet)Cache.Get("CachedDataSet");

    if(myDataSet == null)
    {
    DataLocation.Text = "<P><B>The data came from a connection to the database.</B></P>"; SqlDataAdapter myAdapter = new SqlDataAdapter(
    "SELECT TOP 10 ProductID, ProductName, UnitPrice FROM Products;",
    "server=localhost;database=Northwind;uid=sa;pwd=sa;");
    myDataSet = new DataSet();

    myAdapter.Fill(myDataSet, "Products");

    myDataSet.ExtendedProperties.Add("CreateTime", 
    DateTime.Now.ToLongTimeString());

    Cache.Insert("CachedDataSet", myDataSet, null, 
    DateTime.Now.AddMinutes(30), TimeSpan.Zero);
    }
    else
    {
    DataLocation.Text = "<P><B>The data came from the cache. It was created at: " +
    myDataSet.ExtendedProperties["CreateTime"].ToString() +
    "</P><P>The current system time is: " +
    DateTime.Now.ToLongTimeString() +
    "</B></P>";
    }

    myDataGrid.DataSource = myDataSet.Tables["Products"];
    myDataGrid.DataBind();