为什么我的DataTable行在绑定到GridView后被清除
本文关键字:GridView 清除 绑定 我的 DataTable 为什么 | 更新日期: 2023-09-27 17:59:08
我是ASP的新手。Net,我对DataBind:的工作原理有疑问
-
Page_Load:如果IsPostBack为false,则加载DataTable var(在Page_Loads外部声明)并将其绑定到GridView。我的想法是保留DataTable,避免对数据库进行新的查询。
-
当我点击另一个页面时,PageIndexChanging被触发,这样做:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; GridView1.DataSource = _table; GridView1.DataBind(); }
-
这并不奏效,因为网格显示为空。我在其他例子中发现数据源已经完全重新加载,所以我把加载代码放在一个函数中,并更改了我的PageIndexChanging事件:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; LoadData(); GridView1.DataSource = _table; GridView1.DataBind(); }
-
不是,它像一个符咒!我知道我的DataTable在Page_Load和PageIndexChanging事件之间被清除了,可能是因为服务器没有保留数据表var(请记住,我是ASP.NET的新手…),但我想了解:
- 为什么服务器不保留变量
- 有没有办法绕过这种情况,以避免多个服务器数据请求?什么是优点&旁路里的犯人
非常感谢!
服务器不会保留该值,因为每个请求都由页面类的一个新实例处理。保存数据表的变量与上一个请求中的变量不同。
如果将数据表存储在请求之间的某个位置,则可以避免数据库调用,但缺点是需要资源。如果将数据表置于视图状态,则会占用网络带宽并影响页面加载时间。如果您将其存储在服务器上,它会添加到所使用的内存中,并且跟踪可以从内存中删除的数据并非易事。