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

小弟我的代码如何访问不到页面的label?达人指教

2012-01-31 
我的代码怎么访问不到页面的label?达人指教aspx页面上有几个label控件,已经定义IDforeach(ControlcinPage.

我的代码怎么访问不到页面的label?达人指教
aspx页面上有几个label控件,已经定义ID

foreach   (Control   c   in   Page.Controls)
                        {
                                if   (c.GetType().ToString().Equals( "System.Web.UI.WebControls.Label "))   &&   c.ID!=null)//找到所有Label控件
                                {
                                        ((Label)c).Text   =   count.ToString();
                                        count++;       //count为全局变量,记录找到的TextBox数量
                                }


                        }
运行后没有反映,怎么回事呢?

[解决办法]
不是 Page.Controls 是 Form.Controls
[解决办法]
Form.Controls
[解决办法]
有可能你的label不只直接放在page上,有可能是放在其他容器中。

这种情况需要用递归,因为Page.Controls只能取他的子控件,而不能取孙控件
try:

private void getAllCtl(ControlCollection ctls)
{
foreach (Control c in ctls)
{
if (c is System.Web.UI.WebControls.Label)
{
((Label)c).Text = count.ToString();
count++; //count为全局变量,记录找到的TextBox数量
}
if (c.HasControls())
{
getAllCtl(c.Controls);
}
}
}

然后这样调用:getAllCtl(Page.Controls);
[解决办法]
this.Form.Controls

or

this.form1.Controls (form1是你的表单id)
[解决办法]
学习
[解决办法]
要递归
直接用 if ctrl is Label 判断
[解决办法]
每人都有分,谢谢哦

[解决办法]
Page.Controls 返回的类型是ControlCollection 对象,所以前面要这么写
foreach (ControlCollection c in Page.Controls)

[解决办法]
赞同
[解决办法]
赞同BearRui(开心熊 | 来地球抢分) ( )
[解决办法]
帮顶,学习!!
[解决办法]
晕,我刚看,这问题都结了?!
[解决办法]
控件不是都放在Page上的,而是以控件树的形式存在的,也就是一个控件包含若干个控件,这些子控件还可以包含自己的子控件,因此你仅仅搜索Page的直属子控件会找不到你想要的Label,通常它们都在HtmlForm或者更内层的控件里。如果你一定要这样遍历寻找,最好用递归。

热点排行