我在更新数据库sql server中的记录时出错

时间:2013-12-08 19:31:12

标签: asp.net sql-server

我有一个问题:我有用于将数据插入数据库的页面,以及基于每个项目的查询字符串更新数据的相同页面,当我从文本框更新字段时出现问题,返回相同的数据更新:在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();
    }
}

1 个答案:

答案 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";
            }
        }
    }

希望它有所帮助。