日期:2014-05-18  浏览次数:20349 次

关于CheckBox的问题
protected void Button2_Click(object sender, EventArgs e)//删除按钮
  {
  sqlcon = new SqlConnection(dsn);
  SqlCommand sqlcom;
  for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
  {
  CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
  if (cbox.Checked==true)
  {
  string sqlstr = "delete from ly where id='" + GridView1.DataKeys[i].Value + "'";
  sqlcom = new SqlCommand(sqlstr, sqlcon);
  sqlcon.Open();
  sqlcom.ExecuteNonQuery();
  sqlcon.Close();
  }
  }
  bind();
  }
选中以后,为什么cbox.Checked==false???
请大虾帮帮忙啊!!!

------解决方案--------------------
CheckBox 的autoPostBack是false吗?
------解决方案--------------------
问题大多数出在你绑数据的时候没有考虑PostBack,所以CheckBox对象又重新初始化状态,所有Checked = false

Page_Load事件里看看是不是没有if(IsPostBack)
------解决方案--------------------
CheckBox 的autoPostBack 设置成true
------解决方案--------------------
因为BUTTON的ONCLICK事件是在PAGE LOAD后触发的,
如果在ONCLICK之前重新BIND了,CHECKBOX的值就恢复为初值了。

请查看是否把GRIDVIEW的BINDING的方法放在 NOT ISPOSTBack里面。
if not ispostback then
 GRIDVIEWBIND()。。。。。
end if