可能大家都遇到过这种问题:
当我对一个页面执行添加、修改或是删除一条记录时,按下F5或是刷新按钮,那么页面会再次执行上一条指令,
例如我先删除一条数据后刷新页面,那么它仍旧会执行删除指令,这样的话会使逻辑出现一些问题,这个问题的
解决方法如下:
例如:
一个事件的代码是(只是例子,所以代码本身有很多不规范之处)
protected void btnDel_Click(object sender, EventArgs e)
{
int oldcode = Convert.ToInt32(this.GridView1.SelectedRow.Cells[1].Text);
SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=MyDb;Integrated Security=True");
string sql = "delete from class where cid = " + oldcode;
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "select * from class";
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
ad.Fill(ds);
this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind();
con.Close();
Response.Redirect(Request.RawUrl);
}
加上最后一句便可以达到不重复执行删除指令的效果,但是这样也会有一个问题,就是页面无法保存删除前的其他控件
的状态,所以,在Page_Load方法会加入一些状态设置,所以本身会有这种不好的地方,期待更好的解决方式。