问题是,我正在尝试通过文本框上的用户输入更新我的数据库记录。
下面的代码显示了如何拉出要显示的数据,让用户进行更改,然后点击按钮更新
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_
文本框的内容将恢复为原始内容。
是否需要设置其他属性?
谢谢。
答案 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();
}
}
}