在asp.net中更新数据库中的数据

时间:2016-04-28 03:22:19

标签: asp.net linq

我可以成功选择我想要更新到另一个页面的数据并填充我的文本框但是如果我将所选值设置为我的文本框然后尝试更新它将无法工作并且相同的数据显示在数据库表。

但是,如果我不将这些值设置到我的文本框中,那么我可以成功更新哪些不是我所追求的。

我希望用户查看数据并记录正在更新的内容

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    UserClassesDataContext db= new UserClassesDataContext();

    var qr = from user in db.Users
             where user.user_id == new Guid(Request.QueryString["user_id"])
             select user;

    foreach (var q in qr)
    {
        TextBox1.Text = q.user_name;
        TextBox2.Text = q.password;
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    UserClassesDataContext db = new UserClassesDataContext();

    var qr = from user in db.Users
             where user.user_id == new Guid(Request.QueryString["user_id"])
             select user;

    foreach (var q in qr)
    {
        q.user_name = TextBox1.Text;
        q.password = TextBox2.Text;
    }

    db.SubmitChanges();

    Response.Redirect("Default.aspx");
}

我做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

问题是,当你提交按钮时,Page_Load事件中的代码再次执行。这意味着它正在从你的表中读取数据并将值设置为文本框(从而覆盖通过您正在使用此值(原始值)更新记录。所以基本上你用相同的值更新行。

您可以使用Page.IsPostBack属性来确定事件是通过回发(按钮单击)还是初始页面加载发生的。 这应该解决它。

protected void Page_Load(object sender, EventArgs e)
{
  if(!Page.IsPostBack)
  {
    // to do: read and set to textbox here.
  }
}