遍历web窗体时的怪怪问题
为测试遍历web窗体所有控件时的一个问题:
我给页面添加三个简单控件:
<form id= "form1 " runat= "server ">
<div>
<asp:Label ID= "Label1 " runat= "server " Text= " "> </asp:Label>
<br />
<br />
<asp:TextBox ID= "TextBox1 " runat= "server "> </asp:TextBox> <br />
<br />
<br />
<asp:Button ID= "Button1 " runat= "server " Text= "Button " OnClick= "Button1_Click " />
</div>
</form>
-------------------------------------------------------
遍历代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
string strCtrlID = " ";
foreach (Control ctrlID in this.Parent .Controls )
{/*上面是出错的,我的想法是this.Parent获得按钮的容器也就是窗体,结果却不是,那这里的this是什么意思?
我最早上面是写foreach(Control ctrlID in this.Page.Controls)也是错的
必须写成foreach(Controls ctrlID in this.form1.Controls)才可以
*/
strCtrlID += ctrlID.ID;
}
TextBox1.Text = strCtrlID;
//望达人赐教,谢谢。
------解决方案--------------------你的所有控件是放在你的 <div> </div> 里的,要到这个里面去找,button1也是放在这个 <div> 里的 .Parent 拿到的就是这个div 。我原来做的是在页面上放一个panel(也就是div),动态产生的所有控件都放到 这个panel里,然后从这个panel里在遍历出来
------解决方案--------------------写this.Form1.Controls
protected System.Web.UI.HtmlControls.HtmlForm Form1