關於 點部落 團隊
我們是一群普通的程式設計人員,在各自不同的領域發展, 由於對 IT 知識社群發展有一股的熱誠,所以我們一起創造了這個平台, 我們希望透過 點部落平台 能夠創造出更好的 IT 知識技術分享環境。 歡迎您參與點部落,也請給我們意見與指教,讓我們能夠持續的改善, 營造出更好的環境及平台。tw.dotblogs@gmail.com

常用連結

最新回應

今天颱風天,還是跟例行一樣逛逛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 的討論
 

 


回應

  • jeff 2008/4/27 下午 11:14 回覆

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

    ..我的用法是加入Ajax 的TabContainer..包括了Txtbox....等等...
    foreach 中只能抓到AjaxControlToolkit.TabContainer 的control name ..其它的control 都無法抓到...有試過嗎?

  • dotjum 2008/4/29 下午 08:37 回覆

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

    hi 這兩天我在試試看,再回貼回來。

  • bookkeeper.tw 2008/5/7 上午 09:09 回覆

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

    在asp.net 中發問有人回應我這一段code .我試過是ok的..學到一個經驗是 大腸包香腸的概念..就是要先抓到所謂的容器 (TabContainer ,Panel ...etc)才能再抓容器中的control...
    AjaxControlToolkit.TabContainer tabContainer = (AjaxControlToolkit.TabContainer)objPlaceHold;
    foreach (object objPanel in objTab.Controls)
    {
    if (objPanel is AjaxControlToolkit.TabPanel)
    {
    AjaxControlToolkit.TabPanel tabPanel = (AjaxControlToolkit.TabPanel)objPanel;
    foreach (object objControl in tabPanel.Controls)
    {
    if (objControl is Control)
    {
    Control templateControl = (Control)objControl;
    foreach (object objDetail in templateControl.Controls)
    {
    if (objDetail is System.Web.UI.WebControls.Label)
    ....;
    else if (objDetail is System.Web.UI.WebControls.TextBox)
    ....;
    else if (objDetail is System.Web.UI.WebControls.Button)
    ....;
    else if (objDetail is System.Web.UI.WebControls.LinkButton)
    ....;
    }
    }
    }
    }
    }

  • 劉育成 2008/6/20 下午 12:12 回覆

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

    由於之前常常使用FindControl都沒有問題,
    直到現在才發現使用MasterPage的網頁,用
    Page.FindControl()會找不到物件,所以上
    網來搜尋解決方式,感謝Dotjum無私的奉獻
    讓我的問題順利的解決了,感謝!!


*標 題:

*姓 名:

 電子郵件: (將不會被顯示)

 個人網頁:

*回應

登入後使用進階評論

Please add 7 and 1 and type the answer here: