我一直在阅读有关Page LifeCycle的内容。我理解LifeCycle,然而,它不清楚做什么,何时做。问题是我使用Page_Load来获取数据库值,并设置表单字段。我使用按钮的onClick方法来更新数据库。但是,表单字段文本属性是在Page_Load期间设置的,所以它实际上只是用OLD值更新数据库。
Page_Load:我收集数据,并设置控制文本属性以反映数据。 Button_onClick:我从表单更新数据库 问题:它正在更新从Page_Load收集的值,而不是实际表单。
当然,我不应该在Page_Load中执行所有操作。那么在这个过程中我哪里出错了?
答案 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在您的回发事件后执行(单击按钮,下拉选择更改...),以确保在呈现页面之前完成更新和更一般的数据修改。