确定回发是否是page_load或itemcommand

时间:2009-04-13 18:42:57

标签: grid load itemcommand

我在数据网格的页面左侧有一个用户列表,我想在页面右侧加载一个带有点击用户信息的div。我假设我将在itemcommand事件中加载div,但是如何处理页面加载呢?我是否需要知道导致回发的原因?我是否还需要在page_load上重新加载网格?

2 个答案:

答案 0 :(得分:1)

  

如何处理页面加载?

每个回发都使用页面类的全新实例,并完全重建页面。唯一不同的是,某些控件可能是通过ViewState预先填充的。您无需为任何控件重复加载工作。

  

我是否需要知道导致回发的原因?

ASP.Net将为您处理并解雇该事件。你只需要知道它是否是回发,甚至可能不是(见下一部分)。

  

我是否还需要在page_load上重新加载网格?

是。好吧,有点。您需要将网格的html重新渲染到浏览器。好消息是您的网格数据已经处于视图状态并且会自动发生。你自己不需要担心。

但是,在许多情况下,您可能会发现最好关闭网格的viewstate并在每次回发时重新加载它们。这是因为ViewState只是页面上的隐藏输入,必须随每个请求发布(上传)到服务器。大多数互联网用户的上传带宽非常有限,因此即使您的服务器几乎没有出汗,大型ViewState也会让您的网站看起来很眩晕。

根据您的具体情况,您可以通过在选定控件上禁用ViewState来为站点响应性交换一些多余的服务器性能,从而做得更好。在这种情况下,您将始终加载网格,不再需要关注请求是否是回发。

相比之下,如果这是一个int ra 网络应用程序,其中用户通常与您的Web服务器具有本地以太网连接,则很难击败ViewState以平衡响应性和服务器性能。

答案 1 :(得分:0)

通过检查排除网格绑定!IsPostBack

if(!IsPostBack){
   // Bind the Grid
}

对于div itemcommand,您将检索从网格中单击的值并加载用户的信息。

因此,您不需要每次都加载网格。它只会加载第一次。我不认为你需要检查什么才能回发,因为无论如何你只会加载一次网格。