当前位置:编程学习 > C#/ASP.NET >>

控件类型转换问题


  string smallCtrlID = "class"+Convert.ToString(i) + Convert.ToString(i);//通过字符串拼接成一个控件ID
                    Control smallControl= FindControl(smallCtrlID);//通过这个ID找到该控件
                    HyperLink hl=(HyperLink)smallControl;//将该控件转换成HyperLink类型
                    hl.Text ="";//问题出在这里,提示“未将对象引用设置到对象的实例。”

请问各位高手如何解决此问题,为什么控件类型转换后不能引用它原有的属性呢? --------------------编程问答-------------------- FindControl(smallCtrlID);没有找到你所想要的控件。
FindControl不查找自控件的,找自控件,需要进行递归 --------------------编程问答-------------------- 另外对于GridView等模板列里面的控件,是不能那么查找的 --------------------编程问答--------------------
引用楼主 sdsyzzz 的回复:
C# code

  string smallCtrlID = "class"+Convert.ToString(i) + Convert.ToString(i);//通过字符串拼接成一个控件ID
                    Control smallControl= FindControl(smallCtrlID);//通过这个ID找到该控件
                ……

找到了啊,我设置断点后,在监视器里面看到他找到这个控件了 --------------------编程问答--------------------
引用 3 楼 sdsyzzz 的回复:
引用楼主 sdsyzzz 的回复:
C# code

string smallCtrlID = "class"+Convert.ToString(i) + Convert.ToString(i);//通过字符串拼接成一个控件ID
Control smallControl= FindControl(smallCtrlID);//通过这个ID找到该控件
……

找到了啊,我设置断点后,……


你找到那个控件有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";

--------------------编程问答-------------------- 有啊,有TEXT属性 --------------------编程问答-------------------- 你原来的控件是什么控件? --------------------编程问答-------------------- 原来就是HyperLink的 --------------------编程问答--------------------
引用 7 楼 sdsyzzz 的回复:
原来就是HyperLink的


我这边测试通过 你用我的代码试试 --------------------编程问答--------------------
引用 8 楼 wxr0323 的回复:
引用 7 楼 sdsyzzz 的回复:

原来就是HyperLink的


我这边测试通过 你用我的代码试试

就是上边的那个吗?我这还是那个错误 --------------------编程问答-------------------- 未将对象引用设置到对象的实例。 
说明: 执行当前 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;
 
--------------------编程问答-------------------- 你真的找到了吗?难道计算机会说谎?

Control smallControl = Page.FindControl("HyperLink1");
if(smallControl !=null)
{
HyperLink hl = (HyperLink)smallControl;
hl.Text = "2";

}
else
{
 Response.Write("控件不存在");
} --------------------编程问答-------------------- --------------------编程问答-------------------- 里面不是显示hl为null的吗?
你打印出来 smallControl 的Type看是什么,可能不是HyperLink --------------------编程问答-------------------- <asp:HyperLink ID="HyperLink1" runat="server" Text="test">HyperLink</asp:HyperLink>
--------------------编程问答-------------------- 你要把断点设在47行啊 --------------------编程问答-------------------- 代码没错啊 --------------------编程问答-------------------- 感谢各位的帮助,明天继续,今天学校熄灯了,很可惜
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,