我的GridView有4个字段,我把第2个字段改成了模版,我在显示的时候只显示前10个字,
if (e.Row.RowType == DataControlRowType.DataRow)
        {
  Label gaikuang = (Label)e.Row.Cells[1].FindControl("Label1");
            string gaishu = e.Row.Cells[2].Text;            gaikuang.Text = stringEncode.HTML_to(gaikuang.Text);
            gaishu = stringEncode.HTML_to(gaishu);
            gaishu = gaishu.Trim();
            gaikuang.Text = gaikuang.Text.Trim();
            if (gaikuang.Text.Length > 10)
            {
                gaikuang.Text = gaikuang.Text.Substring(0, 10) + "...";
            }
            if (gaishu.Length > 10)
            {
                e.Row.Cells[2].Text = gaishu.Substring(0, 10) + "...";
            }
}
但是如果进入编辑状态的话,就说:
我上面用来接收模版中控件的Label控件gaikuang "未将对象引用设置到对象的实例。"
因为数据库中存的是特殊字符,所以在取出来的时候咬转换一下,点击编辑模式里面的TextBox要显示转换后的内容所以我转换为模版进行编辑,但是就是总错!

解决方案 »

  1.   

    (Label)(this.GridView1.Rows[0].Cells[0].Controls[0].FindControl("Label1")),你这样试试看吧,我觉得是没有拿到这个Lable对象,然后你的gaikuang那个对象就没有实例化。
    你的方法中少了controls[]集合
      

  2.   

    你在显示时可以用label控件获取,但是编辑的时候控件是Textbox。
      

  3.   

    我找到问题了,在一行数据是编辑状态的时候他是TextBox控件
    在函数中加个判断状态的就行了!