string smallCtrlID = "class"+Convert.ToString(i) + Convert.ToString(i);//通过字符串拼接成一个控件ID
                    Control smallControl= FindControl(smallCtrlID);//通过这个ID找到该控件
                    HyperLink hl=(HyperLink)smallControl;//将该控件转换成HyperLink类型
                    hl.Text ="";//问题出在这里,提示“未将对象引用设置到对象的实例。”请问各位高手如何解决此问题,为什么控件类型转换后不能引用它原有的属性呢?

解决方案 »

  1.   

    FindControl(smallCtrlID);没有找到你所想要的控件。
    FindControl不查找自控件的,找自控件,需要进行递归
      

  2.   

    另外对于GridView等模板列里面的控件,是不能那么查找的
      

  3.   


    你找到那个控件有ID吗?
    还有它的值 监视里看看按它有TEXT么?
    <asp:HyperLink ID="HyperLink1" runat="server" Text="test">HyperLink</asp:HyperLink>
     Control smallControl = Page.FindControl("HyperLink1");
                HyperLink hl = (HyperLink)smallControl;//将该控件转换成HyperLink类型
                hl.Text = "2";
      

  4.   

    未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 45:                     Control smallControl = Page.FindControl("HyperLink1");
    行 46:                     HyperLink hl = (HyperLink)smallControl;//将该控件转换成HyperLink类型
    行 47:                     hl.Text = "2";
    行 48:                     
    行 49:                     //HyperLink hl=(HyperLink)smallControl;
     
      

  5.   

    你真的找到了吗?难道计算机会说谎?Control smallControl = Page.FindControl("HyperLink1");
    if(smallControl !=null)
    {
    HyperLink hl = (HyperLink)smallControl;
    hl.Text = "2";}
    else
    {
     Response.Write("控件不存在");
    }
      

  6.   

    里面不是显示hl为null的吗?
    你打印出来 smallControl 的Type看是什么,可能不是HyperLink
      

  7.   

    <asp:HyperLink ID="HyperLink1" runat="server" Text="test">HyperLink</asp:HyperLink>