我有一个aspx页面,上面有很多TextBox,我需要向里面输入内容,然后 点击按钮,将会保存这些数据到数据库。但是,现在我在page_load里面加入了一个清空所有TextBox内容的函数,具体如下:public void page_load()
{
if(IsPostBack)//这里判定是不是第一次加载页面,如果不是就清空文本框内容
{
//清空所有TextBox内容。
}
}
现在问题是,我每次输入内容后 点击 按钮保存时,结果提示文本框中的值不能为空,
也就是说我还没来得及保存到数据库,文本框的内容就被清空了。我想 问下,难道我按了按钮以后,是先执行page_load,然后执行按钮中的事件代码,注意我这里不是说第一次页面
加载的时候,是页面已经加载好了,现在按下它上面的一个按钮。

解决方案 »

  1.   

    不执行按钮事件,那来的page_load   ???
      

  2.   

    任何时候当然都要从page_load 开始执行了IsPostBack  第一次运行是false
    以后再执行就是 true了, 你if(IsPostBack)  这样  你不管操作什么  肯定先执行里面的代码清空textbox内容  你可以单独写一个函数, 然后在页面某个操作完成后 独立执行这个函数,不要放在page_load   IsPostBack 里一般都是  
    page_load 里只有if(!IsPostBack)
    {
    // 第一次加载执行某些代码    以后不再执行
    }其它操作单独写函数   哪个操作需要  调用即可  
      

  3.   

    public void page_load()
    {
    //..step0
    if(IsPostBack)//这里判定是不是第一次加载页面,如果不是就清空文本框内容
    {
    //清空所有TextBox内容。
    //..step1
    }
    else
    {
    //..step2
    }
    }Button_click(...)
    {
    //..step3
    }
    第一次加载:step0->step2
    按钮事件:step0->step1->step3
      

  4.   

    (一般我不会这样说,因为这有些伤人)但是如果不学习和努力理解基本的asp.net模型来考虑编程,就不要轻易进行asp.net开发,还是得停留在学习教程的阶段。http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80).aspx对于页面的事件和(除页面以外)其它控件的事件的先后次序说得很明白。
      

  5.   


    另外我对于lz所说的“页面加载”非常敏感,深怕你乱用这个概念。当asp.net程序执行时,浏览器端干什么?什么也不干,就是你看到的短暂的延迟阶段。也就是说,Page_Load的含义就是服务器创建了一个Page控件,然后加载到asp.net中来。如果你把asp.net的Page_Load等同于浏览器端document的onload事件,就是完全南辕北辙了。每一次,不论你在浏览器端执行什么小小的操作,只要引起了回发,asp.net都要重建页面对象,然后执行各个事件,然后输出html,然后销毁这个页面对象。这就是asp.net页面对象生命周期模型。
      

  6.   

    当你在浏览器上看到页面开始load了,这时候asp.net程序早已经执行完毕、页面对象早已经被丢弃了。这不是winform,这是asp.net!