foreach 遍历页面所有控件并清除控件文本的问题

Leedsema 2008-11-24 03:55:03
    
protected void btSearch_Click(object sender, EventArgs e)
{
//先进行清空-----------------
///Control ctrl =new Control();
foreach (Control ctrl in Page.Controls)
{
if (ctrl.GetType()==typeof(Label))
((Label)ctrl).Text = "";
}

//以下语句有执行.....可以在页面上看到清除了DATAGRID的数据
dgOtherOutB.DataSource = null;
dgOtherOutB.DataBind();

//.................以下代码省略
}


以上语句为何不能清除页面上所有Label控件的文本?
谢谢各位!!!急救
...全文
345 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
criedshy 2008-11-24


      //递归清空Label
//调用:ClearAllLabel(Page.Controls);
private void ClearAllLabel(ControlCollection ctls)
{
foreach (Control ctrl in ctls)
{
if (control is System.Web.UI.WebControls.Label)
{
System.Web.UI.WebControls.Label lbl = (System.Web.UI.WebControls.Label)control;
lbl.Text= "";
}
if(control.Controls.Count>0)
{
ClearAllLabel(control.Controls);
}
}
}
回复
一弗楚 2008-11-24
//先进行清空-----------------
foreach (Control ctrl in Page.Controls)
{
if (ctrl.GetType() == typeof(HtmlForm))
{
foreach (Control ctrl2 in ctrl.Controls)
{
if (ctrl2.GetType() == typeof(Label))
((Label)ctrl2).Text = "";
}
break;
}
}
回复
Zhanlixin 2008-11-24
前台:
增加一panel控件,其他所有控件都放进panel
<asp:panel id="pnlCollect" runat="server" width="100%" Height="700px" >
...
</asp:panel>


后台:
foreach (Control ctrl in this.pnlCollect.Controls)
{
//Response.Write(ctrl.GetType().ToString()+"\n");
if (ctrl.GetType().ToString() == "System.Web.UI.WebControls.Label")
{
((Label)ctrl).Text = "";

}
}
回复
goalsunboy 2008-11-24
首先,Control ctrl in Page.Controls这个语句遍历的只是Page下的所有的Lable控件,但是当你的Lable控件在其他控件中的时候,这种遍历就不能找到Lable控件了,我觉得要遍历网页中所有的Lable控件可以采用递归算法,代码如下:

//先自定义一个清空的方法
Public Void ClearAllLables(ControlCollection MyControlCollections)
{
foreach(System.Web.UI.Control MyControls in MyControllections)
{
if(MyControls.HasControls())
{
ClearAllLables(MyControls.Controls);
}
else
{
      if(MyControls is System.Web.UI.WebControls.Lable)
{
((Lable)MyControls).Text=String.Empty;
}
    }
}
}
//再调用这个方法就行了

protected void btSearch_Click(object sender, EventArgs e)
{
ClearAllLables(this.Controls);
}
回复
Leedsema 2008-11-24
如何递归呢?教育一下我哦,
难道说是这样?
            if (ctrl.GetType()==typeof(Label))
{
((Label)ctrl).Text = "";

}
//这个不是已经递归了吗?
回复
criedshy 2008-11-24
你要遍历所有的控件,怕是要用递归吧,因为有些控件是容器
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2008-11-24 03:55
社区公告
暂无公告