Asp.net 在Page_PreRender与Page_Load中绑定GridView的好处是什么?

Asp.net 在Page_PreRender与Page_Load中绑定GridView的好处是什么?,asp.net,Asp.net,假设我有一个asp:GridView和一些客户信息。在该页面上,我还有一个按钮,允许我向GridView添加新用户。当我添加click用户时,我会在click按钮中再次数据绑定gridview。如果我错了,请更正,但如果asp.net生命周期或至少部分生命周期按以下顺序进行: 页面加载 连接事件处理程序,如我的按钮单击 页面预渲染 这是否意味着如果我将gridview的数据绑定放在preRender中,那是我唯一需要担心调用它的地方。我可以通过单击按钮将其删除。这就是我的想法,但我不确定我的想法

假设我有一个asp:GridView和一些客户信息。在该页面上,我还有一个按钮,允许我向GridView添加新用户。当我添加click用户时,我会在click按钮中再次数据绑定gridview。如果我错了,请更正,但如果asp.net生命周期或至少部分生命周期按以下顺序进行:

页面加载 连接事件处理程序,如我的按钮单击 页面预渲染


这是否意味着如果我将gridview的数据绑定放在preRender中,那是我唯一需要担心调用它的地方。我可以通过单击按钮将其删除。这就是我的想法,但我不确定我的想法是否正确,因此我想了解一下将代码放入PreRender而不是PageLoad的好处。通过PreRender,您假设页面中影响绑定结果的大多数逻辑已经完成(通常在
pageu Load
,但在更早的地方)

默认情况下,.Net framework中的控件在PreRender事件中进行绑定(有意义的是,在最后一个可能的时刻绑定到数据源……可能是因为您在生命周期中提前400次更改了数据)。供参考

预渲染-在此事件发生之前:

  • Page对象为每个控件和页调用EnsureChildControl
  • 设置了DataSourceID属性的每个数据绑定控件都调用其DataBind方法。有关详细信息,请参阅本主题后面部分中数据绑定控件的数据绑定事件
页面上的每个控件都会发生PreRender事件。使用事件对页面或其控件的内容进行最终更改


但是需要注意的一点是,如果您在绑定控件时做了一些奇怪的事情,例如从onclick处理程序中的网格中获取按钮的选定行,那么您可能需要更早地绑定网格(在页面OnLoad期间)。例如,在使用DevExpress网格执行操作时,我们必须始终将其绑定到页面加载中,以使某些网格事件正常工作。