【发布时间】:2012-04-23 18:23:37
【问题描述】:
我在我的网站上使用 RadGrid 控件,我为 radgrid 启用了分页,并在 sql profiler 上监控它的活动,我知道 radgrid 为每个分页获取数据,然后显示当前页面的数据。
DataSet obj_Dataset = new DataSet(); // is global
这是我在Page_Load 中编写的代码:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection obj_SqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConection"].ToString());
SqlCommand obj_sqlCommand = new SqlCommand();
obj_sqlCommand.CommandText = "select ProductID,ProductName,CategoryID from products";
obj_sqlCommand.CommandType = CommandType.Text;
obj_sqlCommand.Connection = obj_SqlConnection;
SqlDataAdapter obj_DataAdapter = new SqlDataAdapter(obj_sqlCommand);
obj_SqlConnection.Open();
obj_DataAdapter.Fill(obj_Dataset, "Products");
obj_DataAdapter.Dispose();
obj_sqlCommand.Dispose();
obj_SqlConnection.Close();
}
这是我在RadGrid1_NeedDataSource 上的代码:
protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource = obj_Dataset.Tables["Products"];
}
我正在使用 ASP.net 2010 和 Sqlserver 2008。
【问题讨论】:
-
我的代码错了吗?为什么每次我更改页面时它都会从数据库中读取数据。
-
我可以做一些事情,让 radgrid 读取一次数据并每次都使用它。
-
我使用 "Session["Cone"] = (DataSet)obj_Dataset;"在页面加载。并阅读“obj_Dataset = (DataSet)Session["Cone"];"在 RadGrid1_NeedDataSource 上,我解决了问题。但我认为这不是一个好方法,因为我正在使用服务器内存,这可能非常糟糕。有没有更好的方法?
-
使用 session 绝对不是推荐的方式来做你正在做的事情。看我的回答。 :)
标签: asp.net telerik telerik-grid radgrid rad-controls