首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net findControl函数的疑问解决思路

2012-04-01 
asp.net findControl函数的疑问我在网上看的时候说,control1.findControl()查找范围是跟control1在同一个

asp.net findControl函数的疑问
我在网上看的时候说,control1.findControl()查找范围是跟control1在同一个命名空间(貌似就是NamingContainer)中的控件。但是我编写程序的时候遇到了个很奇怪的现象。
我的页面设计代码的层次是
default.master
-----+Content
----------+LoginView
---------------+MultiView
--------------------+Lable1
--------------------+GridView
-------------------------+TemplateField
------------------------------+Button1
------------------------------+TextBox1
Button1的onClick事件代码在下面
 protected void Button1_Click(object sender, EventArgs e)
{
  Button btn = (Button)sender;
  GridViewRow gvr = (GridViewRow)btn.NamingContainer;
  GridView gv = (GridView)gvr.NamingContainer;
  TextBox tb = (TextBox)btn.FindControl("TextBox1");//btn跟tb的NamingContainer相同
  TextBox tbb = (TextBox)gvr.FindControl("TextBox1");//gvr是tbb(tbb跟tb是一个对象)的NamingContainer
  Label l = (Label)gv.NamingContainer.FindControl("Label1");//l和gv的NamingContainer就是LoginView
  Label ll = (Label)gv.FindControl("Label1");//ll和l是同一个对象,在这里反而获得不到对象
  ...
}
在调试状态下,tb和tbb都能获得对象,但是l和ll却是l有对象ll为null。
小弟不解的是,对于TextBox1不论跟他同在一个NamingContainer的控件还是他的NamingContainer控件本身调用findControl函数都能找到TextBox1。而同理情况下,Label1只有他的NamingContainer控件才能通过findControl函数获得其对象。
以上NamingContainer都是看过调试状态信息的,没有错误。求高手解答啊。

[解决办法]
路过帮顶..............
[解决办法]
gv.Parent试试
[解决办法]
很少用服务器控件,帮顶!

热点排行