asp.net的一个重要发现(Page_Load()的执行次序先控件的事件函数)。
今天在做一个更新的功能的时候,老是更新不了数据。设置断点跟踪了一下,发现了这个问题。
先看代码:
protected void Page_Load(object sender, EventArgs e)
{
//没有加IsPostBack之前,Teacher.Update(txtName.Text);这里的txtName.Text永远不变,
//因为是先执行Bind()再执行btnOk_Click();
if (!IsPostBack)
Bind();
}
private void Bind()
{
txtName.Text = "hello";
}
protected void btnOk_Click(object sender, EventArgs e)
{
Teacher.Update(txtName.Text);
}
{
//没有加IsPostBack之前,Teacher.Update(txtName.Text);这里的txtName.Text永远不变,
//因为是先执行Bind()再执行btnOk_Click();
if (!IsPostBack)
Bind();
}
private void Bind()
{
txtName.Text = "hello";
}
protected void btnOk_Click(object sender, EventArgs e)
{
Teacher.Update(txtName.Text);
}
当我点更新按钮的时候,数据总是没有变化,索性改成Teacher.Update("hi");可以更新。
真的奇怪了,设了个断点一调试,发现原来在没有加IsPostBack判断的时候,是先执行Page_Load();
然后才执行btnOk_Click();郁闷了好长时间,写出来,提醒一下其他的朋友。
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。