3

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

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 的值是数据库中的现有值,而不是我在运行时输入的新值,任何人都可以帮助我吗?提前致谢

4

2 回答 2

0

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

改为调用fill(); 网格初始化。

于 2013-02-01T15:28:32.317 回答
0

这是有关Web 表单生命周期的一些信息。我认为您所需要的只是将您fill();if声明包装起来。因为page_load发生在您的事件处理程序之前,您从数据库中重新加载输入的值。

if(!PostBack)
{
  fill();
}
于 2013-02-01T16:42:51.107 回答