我有一个问题:我有用于将数据插入数据库的页面,以及基于每个项目的查询字符串更新数据的相同页面,当我从文本框更新字段时出现问题,返回相同的数据更新:在page_load !!中的文本框中更新数据库中的相同数据
在Page_Load
con.Open();
//For edit items
if (Request.QueryString["id"] != null)
{
Page.Title = "Edit Items";
DataTable dt = Get_Items(Request.QueryString["id"].ToString());
txt_item_name.Text = dt.Rows[0]["name"].ToString();
txt_end_date.Text = dt.Rows[0]["endDate"].ToString();
Btn_addItem.Text = "Edit item";
}
protected void Btn_addItem_Click(object sender, EventArgs e)
{
if (Btn_addItem.Text.Equals("Add Item"))
{
SqlCommand cmd = new SqlCommand("addedit", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@item_id", "-1");
cmd.Parameters.AddWithValue("@name", txt_item_name.Text);
cmd.Parameters.AddWithValue("@endDate", txt_end_date.Text);
con.Open();
cmd.ExecuteNonQuery();
lbl_msg.Text = "Item added....";
con.Close();
}
else
{
SqlCommand cmd = new SqlCommand("addedit", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@item_id", Request.QueryString["id"]);
cmd.Parameters.AddWithValue("@name", txt_item_name.Text);
cmd.Parameters.AddWithValue("@endDate", txt_end_date.Text);
con.Open();
cmd.ExecuteNonQuery();
lbl_msg.Text = "Item edited....";
con.Close();
}
}
答案 0 :(得分:0)
如果我正确理解您的问题“您无法使用您在文本框中输入的新值更新数据库。它会再次使用旧值更新数据库”。
你需要检查!PagePoad中的IsPostback,因为在回发期间Btn_addItem_Click之前将调用从DB绑定文本框的代码,它会将文本框的值设置回DB中的旧值。请参阅以下更新的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
con.Open();
//For edit items
if (Request.QueryString["id"] != null)
{
Page.Title = "Edit Items";
DataTable dt = Get_Items(Request.QueryString["id"].ToString());
txt_item_name.Text = dt.Rows[0]["name"].ToString();
txt_end_date.Text = dt.Rows[0]["endDate"].ToString();
Btn_addItem.Text = "Edit item";
}
}
}
希望它有所帮助。