ASP.NET でのパネルの利用 - ASP.NET コントロールによるdiv枠の表現 - ASP.NET

ASP.NETのパネルを利用して、ASP.NETコントロールでdiv枠を表現するコードを紹介します。

プログラム

UI/コード

下図のUIを作成します。WebフォームにPanelを配置し、内部にメッセージテキストを記述します。


aspxファイルのコードは以下になります。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="panel1.aspx.cs" Inherits="PanelDemo.panel1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Panel ID="Panel1" runat="server">
        <p>このメッセージはPanelコントロール内にあります。</p>
      </asp:Panel>
    </div>
    </form>
</body>
</html>

実行結果

プロジェクトを実行します。aspxファイルをWebブラウザで表示すると以下の画面が表示されます。


このときのソースコードは以下になります。Panelコントロールが実行時にはdivタグで表現されていることが確認できます。
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>

</title></head>
<body>
    <form method="post" action="./panel1.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="ZslWVosE/WXyTIiajLl0surwNfEA2B3xew0DrJPrhWOr+V+OeIGiYluj9X+pUVcKuSas5cjtmqarwW43lbE7Vi9lXDjZyGhkie3YWYDEJJY=" />
</div>

<div class="aspNetHidden">

	<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="D55E96DC" />
</div>
    <div>
      <div id="Panel1">
	
        <p>このメッセージはPanelコントロール内にあります。</p>
      
</div>
    </div>
    </form>
</body>
</html>

プログラム2: パネルの表示非・表示の切り替え

UI

下図のUIを作成します。3つのパネルを配置し、それぞれのパネル内に、メッセージとテキストボックスを配置します。


aspxファイルのコードは下記になります。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="panel2.aspx.cs" Inherits="PanelDemo.panel2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <p>入力欄</p>
      <asp:Panel ID="Panel_Input1" runat="server" Visible="False">
        <p>入力欄その1</p>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      </asp:Panel>
      <asp:Panel ID="Panel_Input2" runat="server" Visible="False">
        <p>入力欄その2</p>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
      </asp:Panel>
      <asp:Panel ID="Panel_Input3" runat="server" Visible="False">
        <p>入力欄その3</p>
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
      </asp:Panel>
    </div>
    </form>
</body>
</html>

コード

下記のコードを記述します。実際に記述するコードはOnLoadイベントの実装です。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace PanelDemo
{
  public partial class panel2 : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      if (Request.QueryString["mode"] == "1") {
        Panel_Input1.Visible = true;
      }
      if (Request.QueryString["mode"] == "2") {
        Panel_Input2.Visible = true;
      }
      if (Request.QueryString["mode"] == "3") {
        Panel_Input3.Visible = true;
      }
    }
  }
}

解説

Request.QueryString["mode"] でURLのパラメーターの"mode"の値を取得します。値が"1"であった場合は、Panel_Input1を表示し、値が"2"であった場合はPanel_Input2を表示し、値が"3"であった場合は、Panel_Input3を表示します。デフォルトではPanelのVisibleはfalseのため、他の値であった場合やパラメーターが指定されていない場合は、パネルは3つとも表示されない動作になります。

実行結果

プロジェクトを実行します。aspxファイルを表示します。パラメーターが指定されていないため、入力欄のテキストボックスは表示されません。


URLの末尾に"?mode=1"を追記してWebフォームにアクセスします。modeパラメーターに"1"が指定されているため、「入力欄その1」が表示されます。


パラメーターに"mode=2"を指定してアクセスした場合の表示結果です。「入力欄その2」のパネルが表示され、メッセージとテキストボックスが表示されます。


"mode=3"を指定した場合の結果です。「入力欄その3」が表示されます。


1,2,3以外のパラメーターを指定した場合は、入力欄は表示されません。


Panelを利用することで、コントロールやテキストをグループ化して表示、非表示の切り替えができます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2016-01-12
iPentec all rights reserverd.