if(!IsValid) done.Text=" borrow fails!";
else done.Text="sucssess!";
是什么意思?我想你理解错了IsValid的用法了。IsValid是用来指示关联的输入控件是否通过验证用的。你这里面我觉得应该用try{}catch{}来处理。
不过看代码应该不会重复执行的啊,你检查一下你的数据库是否有不正确的触发器之类的东西。如果没有请把项目的Debug开启,在vs.net里设置启动页和断点后进入调试模式看看ok_btn_Click方法是否重复执行了。

解决方案 »

  1.   

    你先调试一下。
    我想问题应该在你判断时
    的问题。
    在Page_Load里做断点。看看对数据库的运行次数
      

  2.   

    应该是有一个空间autopostback了。
      

  3.   

    int i=Upd.ExecuteNonQuery();
    if(i==0) done.Text=" borrow fails!";
    else done.Text="sucssess!";
    Upd.Connection.Close();
    ok_btn.Visible=false;
    done.Visible=true;
      

  4.   

    确实是ok_btn_Click方法执行了两次,
    到底是怎么回事呢
      

  5.   

    而且page_load也是执行两次,怎么办
      

  6.   

    我进行了调试,结果是page_load和ok_btn_Click方法都执行了两次。
    执行过程如下:
    进入本页后
    page_load执行2次
    点击ok_btn时,
    page_load执行两次,之后ok_btn_Click方法执行两次
    而后不管执行什么操作page_load都先执行两次
      

  7.   

    我估计是你的页面里的form可能定义了javascript的submit方法,这样按按钮时由于按钮是服务器端控件,页面会自动提交,而你按按钮又触发了javascript的submit,导致页面又被提交一次(注意设置为AutoPostBack=true的控件也回自动提交页面)
    如果不是上面原因请检查你的Page是不是从你自己定义的页面基类继承的?如果那样的话可能会执行两次(因为Page_Load方法基类和子类都会执行)。
    如果都不是,我也不知道会有什么原因了。