コントロール

入れ子マスターページを作成するサンプル

親マスターページの定義

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Parent.master.cs" Inherits="Test.Parent" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
   <title></title>
   <asp:ContentPlaceHolder ID="head" runat="server">
   </asp:ContentPlaceHolder>
</head>
<body>
   <form id="form1" runat="server">
   <div>
       <img alt="" class="style1" src="Images/logo.gif" /></div>
       <asp:ContentPlaceHolder ID="ContentPlaceHolderHeader" runat="server">
       
       </asp:ContentPlaceHolder>
   </form>
</body>
</html>

子マスターページの定義

<%@ Master Language="C#" MasterPageFile="~/Parent.Master" AutoEventWireup="true"
   CodeBehind="Child.master.cs" Inherits="Test.Child" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderHeader" runat="server">
   <table style="width: 100%;">
       <tr>
           <td class="style78" valign="top">
               <asp:Panel ID="Panel1" runat="server">
                   <asp:Label ID="Label1" Text="ABC" runat="server" />
               </asp:Panel>
           </td>
           <td>
               <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
               </asp:ContentPlaceHolder>
           </td>
       </tr>
   </table>
</asp:Content>

一般のフォームページの作成

<%@ Page Title="" Language="C#" MasterPageFile="~/Child.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"  
Inherits="Test.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
   <p>XXXX</p>
</asp:Content>

マスターページ内のコントロールの取得

 マスターページの使用がないページに対して、「this」は自分自身に指し、FindControlでもちろんページのコントロールを取得できるはずですが、マスターページをマークすると、「this.Control」でウォッチしてみると、ページ内のコントロールの順番階層がすべて変わって、マスターページから順番に並んで行く形となる。なので、マスターページ内のコントロールを検索するために、最初にマスターページ内の「ContentPlaceHolder」コントロールを取得してから、階層的に中のコントロールを取得して行きます。同様に入れ子マスターページ使用する場合、最初に一番上のマスターページ内の「ContentPlaceHolder」コントロールを取得し、次は二番目のマスターページの「ContentPlaceHolder」コントロールを取得して、こういう順番で取得したいコントロールを取得できる。

 下記のソースコードは、入れ子マスターページが二つがある場合、子マスターページ内のコントロールを取得する例:

//親マスターページのインスタンスから、子マスターページ内の「ContentPlaceHolder」コントロールを取得
ContentPlaceHolder mpContentPlaceHolder = Page.Master.Master.FindControl("ContentPlaceHolderHeader") as ContentPlaceHolder;
if (mpContentPlaceHolder != null)
{
    //取得した子マスターページの「ContentPlaceHolder」コントロールから、
    //子マスターページ内に配置した「Panel1」コントロールを取得する
    Panel mpTextBox = mpContentPlaceHolder.FindControl("Panel1") as Panel;
    if (mpTextBox != null)
    {
        mpTextBox.Visible = false;
    }
}


iディレクトリで複数のポータルサイトにディレクトリ登録

(画像の文字列を入力して下さい)

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:32:51 (1628d)

G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMITȂ1~] COiq COsیI