web-dev-qa-db-ja.com

マスターページのあるページでコントロールを検索する

マスターページにバインドされたaspxページでControlを見つける必要があります。

マスターページには次のものが含まれます。

<asp:ContentPlaceHolder ID="MainContent" runat="server"/>               

コンテンツページには次のものが含まれます。

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
</asp:Content>

Content2の子としてTableIDformtableを追加しました。

次のコードを使用してTableにアクセスしようとしましたが、コードはnullを返します。

protected void Ok_Click(object sender, EventArgs e)
{
    Table tblForm = this.FindControl("MainContent").FindControl("formtable") as Table;                 
}

Tableにアクセスするにはどうすればよいですか?

13
Aladdin Gallas

これを試して

Table tblForm = this.Master.FindControl("MainContent").FindControl("formtable") as Table; 

これをチェックアウト コンテンツページでのコントロールIDの命名 詳細については

29
Vinay B R

FindControl()を使用すると、問題が発生することがあります。マスターページでそのコントロールのパブリックプロパティを定義してから、プロパティを介してコントロールにアクセスする方が簡単です。

子ページに次の行を追加する必要があります。

<%@ MasterType VirtualPath="~/MasterPage.master" %>
1
Babak

これを行おうとしているとき、あなたはどのような状況にありますか?あなたは個々のページのコードビハインドにいますか?

もしそうなら、それはContent1.FindControl("formtable") as Tableでなければならず、それはそれでしょう。

0
Mitchel Sellers