.NET开发,修改信息时文本框值改变但后台获取的值还是原值BUG

初学.NET,在做一个增删查改的DEMO

修改页页面<body>代码

<body>
    <form id="form1" runat="server">
    <div>
       <label> ID:<asp:TextBox ID="txtId" ReadOnly="true" runat="server"></asp:TextBox></label><br />
        <label>姓名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox></label><br />
        <label>年龄:<asp:TextBox ID="txtAge" runat="server"></asp:TextBox></label><br />
        <label>电话:<asp:TextBox ID="txtTelephone" runat="server"></asp:TextBox></label><br />
        <label>个人简介:<asp:TextBox ID="txtContent" runat="server"></asp:TextBox></label><br />
    </div>
        <asp:Button ID="btnSave" runat="server" Text="提交" OnClientClick="return Check()" OnClick="btnSave_Click" />
        <input type="button" οnclick="ret()" value="返回" />
    </form>
</body>
做修改操作时,原内容填充文本框代码

       private void bind()
        {
            SqlDataReader dr = DbHelperSQL.ExecuteReader("select * from person_msg where id=" + Request.QueryString["ID"]);
            if (dr.Read())
            {
                this.txtId.Text = (String)dr[0].ToString();
                this.txtName.Text = (String)dr[1].ToString().Trim();
                this.txtAge.Text = (String)dr[2].ToString().Trim();
                this.txtTelephone.Text = (String)dr[3].ToString().Trim();
                this.txtContent.Text = (String)dr[4].ToString().Trim();
            }
        }
再修改文本框内容之后,进行数据库操作

 protected void btnSave_Click(object sender, EventArgs e)
        {
                DbHelperSQL.Query("update person_msg set" +
                    " name='" + txtName.Text + "'" +
                    ",age=" + txtAge.Text +
                    ",telephone='" + txtTelephone.Text + "'" +
                    ",p_content='" + txtContent.Text + "'" +
                    " where id=" + txtId.Text
                    );
            }

结果修改结果不变,查找原因,发现:

当执行btnSave_Click事件时同时会执行Page_Load事件,并且Page_Load的执行顺序先于btnSave_Click的执行顺序。所以当我们单击登陆按钮时,它会先执行Page_Load事件,文本框的内容就会清空,在btnSave_Click事件中获取到的内容不是我们在界面输入的值,所以,修改结果不变。

Page_Load事件的特性:

       无论页面的其它任何事件执行时都会先执行Page_Load事件。

       因此,当加载页面并对控件的更改属性进行处理之前,应该先在Page_Load事件中检查该页面是否为被传递回的页面,即要进行IsPostBack的属性的判断。

      Ispostback:就是判断页面是首次加载的,还是数据回发(有get或者post请求过的)后的页面。对于首次加载的页面,IsPostBack的值为false,其它时候加载的页面都是回发页面,IsPostBack的值为true。



  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值