【发布时间】:2014-12-18 18:58:15
【问题描述】:
我有一个包含网格视图的中继器。该 gridview 需要是可编辑的,并且为了提供更流畅的体验,我将 gridview 包裹在一个更新面板中。基于此,页面上有n个更新面板。一切都很好,但我问是因为我害怕可能出现的问题,例如回发大小。这是最好的方法吗?有没有我没有看到的陷阱?
【问题讨论】:
标签: asp.net web updatepanel
我有一个包含网格视图的中继器。该 gridview 需要是可编辑的,并且为了提供更流畅的体验,我将 gridview 包裹在一个更新面板中。基于此,页面上有n个更新面板。一切都很好,但我问是因为我害怕可能出现的问题,例如回发大小。这是最好的方法吗?有没有我没有看到的陷阱?
【问题讨论】:
标签: asp.net web updatepanel
您有符合条件的问题。
首先要知道UpdatePanel 是否始终将整个页面发布到服务器,甚至包括整个 ViewState 内容。你对此无能为力,只要确保你承认这一点。因此,如果您的页面非常大,并且您注意到应用程序的工作方式存在明显滞后,您可能需要考虑一种不同的方法,可能是手动异步调用或类似的方法。
紧随其后的第二件事 - 每当 UpdatePanel 进行回发时,服务器执行整个页面生命周期,然后在页面上更新 UpdatePanel 中的一部分。同样,您不能或不应该做任何事情,这就是UpdatePanel 的工作方式。人们在调试时有时会对这一事实感到惊讶,因此值得一提。
第三件事是针对您的情况,因为您在页面上有多个UpdatePanels。默认情况下,如果其中一个进行回发,所有其他面板也会进行回发,因此它们都会更新。也许这是一种期望的行为,也许不是。如果没有,您可以将每个UpdatePanel 的UpdateMode 属性设置为Conditional,它们将仅在GridView 内部触发更新。更多关于这个here。
UpdatePanels 上的这些以及更多其他详细信息可以在 this article 中找到。
【讨论】: