ASP.Net LifeCycle和数据库更新订单

时间:2011-12-08 15:40:25

标签: asp.net page-lifecycle

我一直在阅读有关Page LifeCycle的内容。我理解LifeCycle,然而,它不清楚做什么,何时做。问题是我使用Page_Load来获取数据库值,并设置表单字段。我使用按钮的onClick方法来更新数据库。但是,表单字段文本属性是在Page_Load期间设置的,所以它实际上只是用OLD值更新数据库。

Page_Load:我收集数据,并设置控制文本属性以反映数据。 Button_onClick:我从表单更新数据库 问题:它正在更新从Page_Load收集的值,而不是实际表单。

当然,我不应该在Page_Load中执行所有操作。那么在这个过程中我哪里出错了?

1 个答案:

答案 0 :(得分:0)

<强>的Page_Load

如果要在Page_Load事件中加载数据库数据,首先要做的是将其包装在if (!IsPostBack)语句中。

  

<强>的IsPostBack
  获取一个值,该值指示是否为该页面呈现页面   第一次或正在加载以响应回发。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx

当页面循环是回发的结果时,IsPostBack = true

在您的Page_Load中,您应该只在IsPostBack = false时收集数据,而不是在每次加载页面时收集数据。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // gather your data here
    }
}

设置字段

我个人更喜欢在PreRender事件处理程序中设置字段内容(但我很不知道它应该/必须在那里完成,这对我来说似乎更合乎逻辑)。

PreRender在您的回发事件后执行(单击按钮,下拉选择更改...),以确保在呈现页面之前完成更新和更一般的数据修改。