2011-12-08 65 views
2

我一直在阅读有关Page LifeCycle的内容。我了解生命周期,但是,不知道该做什么以及何时去做。问题是我使用Page_Load来获取数据库值,并设置表单域。我使用按钮的onClick方法来更新数据库。但是,表单字段文本属性是在Page_Load期间设置的,所以它实际上只是用OLD值更新数据库。ASP.Net LifeCycle和数据库更新命令

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

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

+1

不要忘记在Page_Load中使用!Page.IsPostback,以确保在第一次访问页面时只加载初始值。 – AaronS

回答

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 
    } 
} 

设置领域

我personnaly希望设置字段上PreRender事件处理程序的内容(但honnestly我不知道它应该/必须在那里进行,它只是似乎更逻辑我)。

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

+0

错了。首先要评估页面加载事件是否需要或者是否可以使用。此外,还有许多情况下添加!IsPostBack将**砖**您的代码。 –

+0

好吧,我当然不是专家。你能指点我一些文章/实例吗? –

+0

http://stackoverflow.com/questions/6384613/aspxgridview-performcallback-does-full-page-postback –