当复选框为unc时,aspcheckbox的C#oncheckedchanged事件处理程序不会触发

时间:2011-06-23 15:51:47

标签: c# asp.net

嘿,你能看看这段代码:我收到这个错误:

  

对象引用未设置为对象的实例。描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

来源错误:

{
    CheckBox chkBox1 = (CheckBox)e.Row.Cells[8].FindControl("chkStatus"); 
    chkBox1.CheckedChanged += new EventHandler(chkStatus_OnCheckedChanged); 
    chkBox1.Checked = true; 
    chkBox1.AutoPostBack = true;
}

2 个答案:

答案 0 :(得分:2)

您确定在第一行中,FindControl方法调用实际上是返回一个控件。尝试在第166行放置一个断点,看看chkBox1在那一点上等于什么。我的猜测是它的值为空。

答案 1 :(得分:1)

你应该检查你的细胞计数并检查FindControl引用的控件上是否有CheckBox。

if (e.Row.Cells.Count > 8)
{
  CheckBox chkBox1 = e.Row.Cells[8].FindControl("chkStatus") as CheckBox;

  if (chkBox1 != null)
  { 
    chkBox1.CheckedChanged += new EventHandler(chkStatus_OnCheckedChanged); 
    chkBox1.Checked = true; 
    chkBox1.AutoPostBack = true;
  }
}