在asp.net中,避免在每次页面加载时将数据重新绑定到网格
在asp.net中,建议我存储数据表并将其绑定到网格的最佳方法,以避免在每次页面加载时重新绑定在asp.net中,避免在每次页面加载时将数据重新绑定到网格,asp.net,grid,Asp.net,Grid,在asp.net中,建议我存储数据表并将其绑定到网格的最佳方法,以避免在每次页面加载时重新绑定 谢谢网格值将自动存储在ViewState中。除非更改数据,否则不需要在每次回发时重新绑定 如果您有一个数据集,每次都要从中检索不同的视图(如自定义分页或排序),则应使用缓存来存储数据集进行计算。如果viewstate处于启用状态,则无需重新绑定 如果有什么变化,你需要重新绑定,你有几个选择。将数据源存储在viewstate或会话中。这样,您就不必在每次需要添加筛选器或分页等时都访问数据库 例如 如果需
谢谢网格值将自动存储在ViewState中。除非更改数据,否则不需要在每次回发时重新绑定
如果您有一个数据集,每次都要从中检索不同的视图(如自定义分页或排序),则应使用缓存来存储数据集进行计算。如果viewstate处于启用状态,则无需重新绑定 如果有什么变化,你需要重新绑定,你有几个选择。将数据源存储在viewstate或会话中。这样,您就不必在每次需要添加筛选器或分页等时都访问数据库 例如 如果需要应用过滤器,只需将数据从存储会话或viewstate中取出,执行操作并再次存储即可。然后只需调用BindYourGrid
这样,除非你需要,否则你永远不会真正达到DB。还有其他方法可以缓存数据源的数据,它们都有优缺点。尽管我只展示了两种方法,但在您的情况下,请使用任何有效的方法。是的。如果您钩住DataBind事件,您会注意到它不会在启用ViewState的情况下在回发时触发,除非发生使缓存值无效的操作。GridView通常相当聪明地知道什么时候会使缓存副本无效。尤其是与官方数据源(如ObjectDataSource和friends)一起使用时。
// Load up date initially
public void LoadYourData()
{
// This gets your data however you are doing it, in this example I am returning
// a list of objects.
List<YourObjects> yourData = GetYourData();
// You then have the option to save it in the session or viewstate, I will
// demonstrate both. Make sure if you are using viewstate that your objects are
// serializable. You should probably also create helper classes to deal with
// getting and setting data from the ViewState object or Session.
Session["YourData"] = yourData;
ViewState["YourData"] = yourData;
}
// Then make a bind function that gets the data out of whatever store you have it in
public void BindYourGrid()
{
// I will assume you used session
grdYourGrid.DataSource = (List<YourObjects>)(Session["YourData"]);
grdYourGrid.DataBind();
}
GetYourData();
BindYourGrid();