2008-11-24 61 views
1

我有一個母版頁和一個內容頁面我的內容頁面有許多控件, - 下拉列表,文本框,單選按鈕。通過內容頁面中的下拉列表循環 - VS2008

我經歷了所有的控制,如果要循環的,我想獲得的SelectedValue上方,然後對照,文字等的一個

我知道我可以直接按名稱訪問控制,但因爲這是我的學習上asp.net的經驗,我希望能夠去通過控件集合

我試圖

foreach(Controls ctrl in Master.Controls) 
{ 
} 

,但我不是能得到我所需要的控制。

編輯::我想我畫的槍太快了,因爲我的intellisense不停地對我失敗。我解決了我的問題,這個在後面的代碼我的內容頁面上

protected void btnSearch_Click(object sender, EventArgs e) 
     { 
      foreach (Control ctrl in Master.Controls) 
      { 
       if (ctrl is HtmlForm) 
       { 
        foreach(Control formControl in ctrl.Controls) 
        { 
         if (formControl is ContentPlaceHolder) 
         { 
          foreach (Control placeHolderControl in formControl.Controls) 
          { 
           if (placeHolderControl is DropDownList) 
           { 
            string test = "AA"; 
           } 
          } 
         } 
        } 

       } 

      } 
     } 

我們建立一個遞歸過程

回答

0

如果你正試圖從母版頁訪問內容頁控件,您需要訪問通過適當的ContentPlaceHolder(在母版頁上)進行控制。這樣的事情:

foreach (Control c in ContentPlaceHolder1.Controls) 
{ 
    Response.Write(c.ID); 
} 
2

該控件是在heirarchy。頁面中唯一的控件通常是一個Form(但不總是)。該表單包含出現在<form>標記中的控件。如果表單中有例如<p runat="server">,則<p>將包含出現在其中的所有控件。

例如,

<form runat="server"> 
    <p runat="server"> 
    <asp:Label runat="server" /> 
    <asp:TextBox runat="server" /> 
    </p> 
    <p runat="server"> 
    <asp:Button runat="server" /> 
    </p> 
</form> 

將導致以下結構:

form 
- p 
    - label 
    - textbox 
- p 
    - button 

因此,必須通過在直接容納控制的控制迴路。

- 編輯:

此外,通過所有的控制循環中,您將需要或者遞歸地或迭代循環到層次結構