asp.net gridview编辑按钮不会更新

时间:2013-02-01 15:16:37

标签: asp.net gridview edit

当我输入新数据并按更新按钮时,它会保存旧数据(我想要更新的数据)。

public void fill()
{
    SqlCommand cmd = new SqlCommand("select * from school ",con );
    con.Open();
    SqlDataReader rd = cmd.ExecuteReader();

    GridView1.DataSource = rd;
    GridView1.DataBind();
    con.Close();
}

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
    fill();
}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

    int id = int.Parse(((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text);
    string  stu =((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
    int age = int.Parse(((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text);

    SqlCommand cmd = new SqlCommand("UPDATE school SET  stu_name=@stu_name,age=@age where id=@id ", con);
    cmd.Parameters.Add(new SqlParameter("@id", id));
    cmd.Parameters.Add(new SqlParameter("@stu_name", stu));
    cmd.Parameters.Add(new SqlParameter ("@age",age));

    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();

    GridView1.EditIndex = -1;
    fill();
}

他认为分配给name,age的值是数据库中的现有值而不是我在运行时输入的新值 任何人都可以帮助我? 提前谢谢

2 个答案:

答案 0 :(得分:0)

每次编辑时都会重新填充网格。

改为在网格init上调用fill();

答案 1 :(得分:0)

以下是有关网络表单Life Cycle的一些信息。我认为你需要的只是将你的fill();包裹在if声明中。由于page_load发生在事件处理程序之前,因此您可以在输入的值之上从数据库重新加载。

if(!PostBack)
{
  fill();
}