摘要:[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 的討論