-1
  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;
            }
         }           
    }

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

4

1 回答 1

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),但您真正的问题存在于其他地方。如果这段代码期望这些控件已经被实例化,那么您需要查看它们是如何被实例化的,以及为什么在这段代码执行时它们没有被实例化。

于 2013-11-13T21:59:03.933 回答