日期:2014-05-19  浏览次数:20657 次

遍历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