クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2005
Visual Studio ドキュメント
詳細説明
 方法 : ASP.NET Web ページにコントロールをプログラムによ...
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
ASP.NET
方法 : ASP.NET Web ページにコントロールをプログラムによって追加する

コントロールをデザイン時ではなく実行時に作成した方が実際的である場合もあります。たとえば、検索結果ページで結果をテーブルに表示することがあります。この場合、返される項目の数がわからないため、返される各項目について 1 つのテーブル行を動的に生成する必要があります。

Noteメモ :

既存のコントロールの多くは、コントロールを動的に作成することで実現できる機能をサポートしています。たとえば、RepeaterDataListRadioButtonList の各コントロールは、ページの実行時に行やその他のコントロール要素を動的に作成できます。

コントロールをプログラムでページに追加するには、新しいコントロールのコンテナが必要です。たとえば、テーブルの行を作成する場合、コンテナはテーブルです。明確にコンテナとして機能するコントロールが存在しない場合は、PlaceHolder Web サーバー コントロールまたは Panel Web サーバー コントロールを使用できます。

場合によっては、静的テキストとコントロールの両方を作成する必要があります。静的テキストを作成する場合は、Literal Web サーバー コントロールまたは Label Web サーバー コントロールを使用できます。これらのコントロールは、ほかのコントロールと同様にコンテナに追加できます。実行時に作成されるコントロールのビューステートについては、「動的なコントロールとビューステート」を参照してください。

Note重要

プログラムによって ASP.NET Web フォーム ページにコントロールを追加するには

  1. 次の例に示すように、コントロールのインスタンスを作成してプロパティを設定します。

    Visual Basic
    Dim myLabel As New Label()
    myLabel.Text = "Sample Label"
    C#
    Label myLabel = new Label();
    myLabel.Text = "Sample Label";
    Noteメモ :

    通常の場合、コントロールはページの初期化の段階でページに追加されます。ページの段階の詳細については、「ASP.NET ページのライフ サイクルの概要」を参照してください。

  2. 次の例に示すように、既にページにあるコンテナの Controls コレクションに新しいコントロールを追加します。

    Visual Basic
    Dim Panel1 As New Panel()
    Panel1.Controls.Add(myLabel)
    C#
    Panel Panel1= new Panel();
    Panel1.Controls.Add(myLabel);
    Noteメモ :

    Controls プロパティはコレクションのため、AddAt メソッドを使用して、新しいコントロールを他の前などの特定の場所に配置できます。ただし、この指定によってページにエラーが発生することもあります。詳細については、「動的なコントロールとビューステート」を参照してください。

    DropDownList1 というコントロールの SelectedIndexChanged イベントのイベント ハンドラのコード例を次に示します。このハンドラは、ドロップダウン リストからユーザーが選択したラベル コントロールと同数のラベル コントロールを作成します。コントロールのコンテナは、Placeholder1 という PlaceHolder Web サーバー コントロールです。

    Security noteセキュリティに関するメモ :

    Web ページのユーザー入力には、悪意のあるクライアントのスクリプトが含まれている可能性があります。既定では、ASP.NET Web ページは、ユーザー入力にスクリプトまたは HTML 要素が含まれていないことを検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。

    Visual Basic
    Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
        Dim DropDownList1 As New DropDownList()
        Dim PlaceHolder1 As New PlaceHolder()
        Dim i As Integer
        Dim numlabels As Integer
        
        ' Get the number of labels to create.
        numlabels = CInt(DropDownList1.SelectedItem.Text)
        For i = 1 To numlabels
            Dim myLabel As Label = New Label()
            ' Set the label's Text and ID properties.
            myLabel.Text = "Label " & i
            myLabel.ID = "Label" & i
            PlaceHolder1.Controls.Add(myLabel)
            ' Add a spacer in the form of an HTML <br /> element
            Dim spacer As LiteralControl = New LiteralControl("<br />")
            PlaceHolder1.Controls.Add(spacer)
        Next
    End Sub
    C#
    private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        DropDownList DropDownList1 = new DropDownList();
        PlaceHolder PlaceHolder1 = new PlaceHolder();
        
      // Get the number of labels to create.
     int numlabels = System.Convert.ToInt32(DropDownList1.SelectedItem.Text);
     for (int i=1; i<=numlabels; i++)
     {
       Label myLabel = new Label();
         
       // Set the label's Text and ID properties.
       myLabel.Text = "Label" + i.ToString();
       myLabel.ID = "Label" + i.ToString();
       PlaceHolder1.Controls.Add(myLabel);
       // Add a spacer in the form of an HTML <br /> element.
       PlaceHolder1.Controls.Add(new LiteralControl("<br />"));
     } 
    }

参照

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker