对象引用未设置为我的代码中的对象错误的实例

时间:2013-11-13 21:57:09

标签: c# asp.net

  protected void ImageButton_enable_Click(object sender, ImageClickEventArgs e)    
    {
        foreach(GridViewRow gvrow in GridView_enable.Rows)
        {
            CheckBox chk1=(CheckBox) gvrow.FindControl("CheckBox_select");
            if (chk1.Checked == true)
            {
                Label lblEmail = (Label)gvrow.FindControl("Label1");
                string email = lblEmail.Text;
            }
         }           
    }

我的代码有什么问题?我收到此错误“对象引用未设置为对象的实例”。

1 个答案:

答案 0 :(得分:4)

protected void ImageButton_enable_Click(object sender, ImageClickEventArgs e)
{
    foreach(GridViewRow gvrow in GridView_enable.Rows)
    {
        CheckBox chk1= gvrow.FindControl("CheckBox_select") as CheckBox;
        if (chk1 != null && chk1.Checked == true)
        {
            Label lblEmail = gvrow.FindControl("Label1") as Label;
            if (lblEmail != null)
                 Console.WriteLine(lblEmail.Text);
        }
     }
}

修改 詹姆斯的评论迫使我补充一下:

上述代码更改将解决您的直接问题(以及使用FindControl和类似方法时,您应始终使用as并检查null),但您的真正问题存在于其他地方。如果这段代码期望这些控件已经被实例化,那么你需要看看它们是如何实现的,以及为什么它们不会在这段代码执行时出现。