当我输入新数据并按更新按钮时,它会保存旧数据(我想要更新的数据)。
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的值是数据库中的现有值而不是我在运行时输入的新值 任何人都可以帮助我? 提前谢谢
答案 0 :(得分:0)
每次编辑时都会重新填充网格。
改为在网格init上调用fill();
。
答案 1 :(得分:0)
以下是有关网络表单Life Cycle的一些信息。我认为你需要的只是将你的fill();
包裹在if
声明中。由于page_load
发生在事件处理程序之前,因此您可以在输入的值之上从数据库重新加载。
if(!PostBack)
{
fill();
}