Textbox在更新过程asp.net之前保留旧值

时间:2015-04-22 06:29:24

标签: c# asp.net

问题是,我正在尝试通过文本框上的用户输入更新我的数据库记录。

下面的代码显示了如何拉出要显示的数据,让用户进行更改,然后点击按钮更新

protected void Page_Load(object sender, EventArgs e)
{
    List<SqlParameter> parameters = new List<SqlParameter>();
    parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
    SqlDataReader reader = SqlHelper.ExecuteReader(connection, "get_person_to_update", parameters.ToArray());
    while (reader.Read()) 
    {
       fname.Text = reader["fname"].ToString();
       mname.Text = reader["mname"].ToString();
       lname.Text = reader["lname"].ToString();
       qualifier.Text = reader["qualifier"].ToString();
       alias_.Text = reader["alias"].ToString();
       address.Text = reader["address"].ToString();
       statussuspect.SelectedIndex = -1;
       statussuspect.SelectedValue = reader["status_of_suspect"].ToString();
     }

}

这是更新代码

protected void SAVEEDIT_Click(object sender, EventArgs e)
        {
            List<SqlParameter> parameters = new List<SqlParameter>();
            parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
            parameters.Add(new SqlParameter("@fname", fname.Text.Trim().ToUpper()));
            parameters.Add(new SqlParameter("@mname", mname.Text.Trim().ToUpper()));
            parameters.Add(new SqlParameter("@lname", lname.Text.Trim().ToUpper()));
            parameters.Add(new SqlParameter("@qualifier", qualifier.Text.Trim().ToUpper()));
            parameters.Add(new SqlParameter("@alias_", alias_.Text.Trim().ToUpper()));
            parameters.Add(new SqlParameter("@address", address.Text.Trim().ToUpper()));
            parameters.Add(new SqlParameter("@status", statussuspect.SelectedValue));
            int affecterows = SqlHelper.ExecuteNonQuery(connection, "update_person", parameters.ToArray());
            if (affecterows > 0)
            {
                //prompt for success
                if (statussuspect.SelectedValue == "DETAINED")
                {
                    if ((!Page.ClientScript.IsStartupScriptRegistered("alert")))
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "notifyedit();", true);
                    }
                }
                if ((!Page.ClientScript.IsStartupScriptRegistered("alert")))
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "notifysuccess();", true);
                }
           }
        }

affecterows变量返回-1,表示没有更新记录。

现在,为了确保一切正常,我尝试更改名为alias_的文本框的内容。令我惊讶的是,点击“保存”按钮后,alias_文本框的内容将恢复为原始内容。

是否需要设置其他属性?

谢谢。

2 个答案:

答案 0 :(得分:3)

Page_Load方法中的数据绑定逻辑绑定点击事件PostBack上的数据。因此,请更改Page_Load方法,

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            List<SqlParameter> parameters = new List<SqlParameter>();
            parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
            SqlDataReader reader = SqlHelper.ExecuteReader(connection, "get_person_to_update", parameters.ToArray());
            while (reader.Read())
            {
                fname.Text = reader["fname"].ToString();
                mname.Text = reader["mname"].ToString();
                lname.Text = reader["lname"].ToString();
                qualifier.Text = reader["qualifier"].ToString();
                alias_.Text = reader["alias"].ToString();
                address.Text = reader["address"].ToString();
                statussuspect.SelectedIndex = -1;
                statussuspect.SelectedValue = reader["status_of_suspect"].ToString();
            }
        }
    }

答案 1 :(得分:2)

喜欢这个

 protected void Page_Load(object sender, EventArgs e)
    {
      if(!page.Ispostback)
       {
        List<SqlParameter> parameters = new List<SqlParameter>();
        parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
        SqlDataReader reader = SqlHelper.ExecuteReader(connection, "get_person_to_update", parameters.ToArray());
        while (reader.Read()) 
        {
            fname.Text = reader["fname"].ToString();
            mname.Text = reader["mname"].ToString();
            lname.Text = reader["lname"].ToString();
            qualifier.Text = reader["qualifier"].ToString();
            alias_.Text = reader["alias"].ToString();
            address.Text = reader["address"].ToString();
            statussuspect.SelectedIndex = -1;
            statussuspect.SelectedValue = reader["status_of_suspect"].ToString();
        }

    }

}