[ASP.NET]如何抓取Get Master Page 下 Content Page 中的所有All Control控制項透過foreach方式

摘要:[ASP.NET]如何抓取Get Master Page 下 Content Page 中的所有All Control控制項透過foreach方式

今天颱風天,還是跟例行一樣逛逛MSDN 論壇,
發現一則問題 如何抓取 Content Page 中的控制項?
就想到之前 Dotjum 有做過一個尋找頁面下所有的 Control
[ASPX] 尋找Page下的Control 透過 foreach 方式
http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=765725&SiteID=14
但這次的狀況不一樣是要在 Master Page 下的 Conten Page ,
所以之前 [ASPX] 尋找Page下的Control 透過 foreach 方式 這段語法就不適合
但其實也很簡單,話不多說請看 ,
一樣情境是要清空Master Page 下的 Content Page 下的所有 textBox
 

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:TextBox ID="TextBox1" Text="a" runat="server"></asp:TextBox>
    <asp:TextBox ID="TextBox2"  Text="a" runat="server"></asp:TextBox>
</asp:Content>
而程式的流程
1.先建立出 ContentPlaceHolder 然後在 Master 下去找該 Content
2.然後就能透過 foreach 找目前下面所有的 Control
3.再透過 if 來找出你要的行別的Control (當然你也可以用 FindControl)
找單一的Control的方式。
4.找到你要的Control就能夠想改什麼,就改什麼。


    protected void Page_Load(object sender, EventArgs e)
    {
        ClearTextBoxes();
    }
    void ClearTextBoxes()
    {
        ContentPlaceHolder mpContentPlaceHolder;
        
        mpContentPlaceHolder =
          (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");

        foreach (object ctrl in mpContentPlaceHolder.Controls)
        {                   
                    if (ctrl is System.Web.UI.WebControls.TextBox)
                    {
                        
                        TextBox textctrl = (TextBox)ctrl;
                        textctrl.Text = "";
                    }
           
        }
    }
 
有趣嗎?下次在介紹有趣的給你知道。


MSDN FORUM 討論於
其他相關討論 如何抓取 Content Page 中的控制項?

找出ASPX頁面Page下所有的Control
在Master Page 下 Content Page 找所有Control foreach
在 MSDN FORUM Dotjum的討論
Dotjum 在 MSDN FORUM 的討論