次の方法で共有


HtmlSelectBuilder クラス

定義

パーサーとやり取りして、HtmlSelect コントロールを作成します。

public ref class HtmlSelectBuilder : System::Web::UI::ControlBuilder
public class HtmlSelectBuilder : System.Web.UI.ControlBuilder
type HtmlSelectBuilder = class
    inherit ControlBuilder
Public Class HtmlSelectBuilder
Inherits ControlBuilder
継承
HtmlSelectBuilder

次のコード例では、カスタム HtmlSelectBuilder コントロールの 2 種類の <option> 子要素を定義し、各型を異なる方法で処理するカスタム HtmlSelect コントロールを作成する方法を示します。

<%@ Page Language="C#"%>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls" Assembly="Samples.AspNet.CS" %>

<!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>HtmlSelectBuilder Example</title>
</head>
  <body>
    <form id="Form1" runat="server">
      <h3>HtmlSelectBuilder Example</h3>

      <aspSample:CustomHtmlSelect
       id="customhtmlselect1"
       runat="server">
      <aspSample:MyOption1 optionid="option1" value="1" text="item 1"/>
      <aspSample:MyOption1 optionid="option2" value="2" text="item 2"/>
      <aspSample:MyOption2 optionid="option3" value="3" text="item 3"/>
      <aspSample:MyOption2 optionid="option4" value="4" text="item 4"/>
      </aspSample:CustomHtmlSelect>

    </form>

  </body>

</html>
<%@ Page Language="VB"%>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB.Controls" Assembly="Samples.AspNet.VB" %>

<!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>HtmlSelectBuilder Example</title>
</head>
  <body>
    <form id="Form1" runat="server">
      <h3>HtmlSelectBuilder Example</h3>

      <aspSample:CustomHtmlSelect
       id="customhtmlselect1"
       runat="server">
      <aspSample:MyOption1 optionid="option1" value="1" text="item 1"/>
      <aspSample:MyOption1 optionid="option2" value="2" text="item 2"/>
      <aspSample:MyOption2 optionid="option3" value="3" text="item 3"/>
      <aspSample:MyOption2 optionid="option4" value="4" text="item 4"/>
      </aspSample:CustomHtmlSelect>

    </form>

  </body>

</html>
using System;
using System.Security.Permissions;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
        // Define a type of child control for the custom HtmlSelect control.
    public class MyOption1
    {
        string _id;
        string _value;
        string _text;

        public string optionid
        {
            get
            { return _id; }
            set
            { _id = value; }
        }

        public string value
        {
            get
            { return _value; }
            set
            { _value = value; }
        }

        public string text
        {
            get
            { return _text; }
            set
            { _text = value; }
        }
    }

       // Define a type of child control for the custom HtmlSelect control.
    public class MyOption2
    {
        string _id;
        string _value;
        string _text;

        public string optionid
        {
            get
            { return _id; }
            set
            { _id = value; }
        }

        public string value
        {
            get
            { return _value; }
            set
            { _value = value; }
        }

        public string text
        {
            get
            { return _text; }
            set
            { _text = value; }
        }
    }

    // Define a custom HtmlSelectBuilder control.
    public class MyHtmlSelectBuilder : HtmlSelectBuilder
    {
        [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
        public override Type GetChildControlType(string tagName, IDictionary attribs)
        {
            // Distinguish between two possible types of child controls.
            if (tagName.ToLower().EndsWith("myoption1"))
            {
                return typeof(MyOption1);
            }
            else if (tagName.ToLower().EndsWith("myoption2"))
            {
                return typeof(MyOption2);
            }
            return null;
        }
    }

    [ControlBuilderAttribute(typeof(MyHtmlSelectBuilder))]
    public class CustomHtmlSelect : HtmlSelect
    {
        
        // Override AddParsedSubObject to treat the two types
        // of child controls differently.
        protected override void AddParsedSubObject(object obj)
        {
            string _outputtext;
            if (obj is MyOption1)
            {
                _outputtext = "option group 1: " + ((MyOption1)obj).text;
                ListItem li = new ListItem(_outputtext, ((MyOption1)obj).value);
                base.Items.Add(li);
            }
            if (obj is MyOption2)
            {
                _outputtext = "option group 2: " + ((MyOption2)obj).text;
                ListItem li = new ListItem(_outputtext, ((MyOption2)obj).value);
                base.Items.Add(li);
            }
        }
    }
}
Imports System.Security.Permissions
Imports System.Collections
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Namespace Samples.AspNet.VB.Controls
    ' Define a type of child control for the custom HtmlSelect control.
    Public Class MyOption1
        Private _id As String
        Private _value As String
        Private _text As String


        Public Property optionid() As String
            Get
                Return _id
            End Get
            Set(ByVal value As String)
                _id = value
            End Set
        End Property

        Public Property value() As String
            Get
                Return _value
            End Get
            Set(ByVal value As String)
                _value = value
            End Set
        End Property

        Public Property [text]() As String
            Get
                Return _text
            End Get
            Set(ByVal value As String)
                _text = value
            End Set
        End Property
    End Class 

    ' Define a type of child control for the custom HtmlSelect control.
    Public Class MyOption2
        Private _id As String
        Private _value As String
        Private _text As String


        Public Property optionid() As String
            Get
                Return _id
            End Get
            Set(ByVal value As String)
                _id = value
            End Set
        End Property

        Public Property value() As String
            Get
                Return _value
            End Get
            Set(ByVal value As String)
                _value = value
            End Set
        End Property

        Public Property [text]() As String
            Get
                Return _text
            End Get
            Set(ByVal value As String)
                _text = value
            End Set
        End Property
    End Class 

    ' Define a custom HtmlSelectBuilder control.
    Public Class MyHtmlSelectBuilder
        Inherits HtmlSelectBuilder

        <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
        Public Overrides Function GetChildControlType(ByVal tagName As String, ByVal attribs As IDictionary) As Type

            ' Distinguish between two possible types of child controls.
            If tagName.ToLower().EndsWith("myoption1") Then
                Return GetType(MyOption1)
            ElseIf tagName.ToLower().EndsWith("myoption2") Then
                Return GetType(MyOption2)
            End If
            Return Nothing

        End Function 
    End Class 

    <ControlBuilderAttribute(GetType(MyHtmlSelectBuilder))> _
    Public Class CustomHtmlSelect
        Inherits HtmlSelect

        ' Override AddParsedSubObject to treat the two types
        ' of child controls differently.
        Protected Overrides Sub AddParsedSubObject(ByVal obj As Object)
            Dim _outputtext As String
            If TypeOf obj Is MyOption1 Then
                _outputtext = "option group 1: " + CType(obj, MyOption1).text
                Dim li As New ListItem(_outputtext, CType(obj, MyOption1).value)
                MyBase.Items.Add(li)
            End If
            If TypeOf obj Is MyOption2 Then
                _outputtext = "option group 2: " + CType(obj, MyOption2).text
                Dim li As New ListItem(_outputtext, CType(obj, MyOption2).value)
                MyBase.Items.Add(li)
            End If

        End Sub 
    End Class 
End Namespace

注釈

コントロールは HtmlSelectBuilder ページ パーサーと対話してコントロールを HtmlSelect 構築します。 コントロールを HtmlSelectBuilder 使用して、コントロールの解析を HtmlSelect カスタマイズします。

この AllowWhitespaceLiterals プロパティは、空白が常に false 無視されるように設定されます。 このメソッドを GetChildControlType 使用して、コントロールの子コントロールの HtmlSelect 型を決定します。

注意 (継承者)

コントロールのカスタム コントロール ビルダーを HtmlSelect 作成するには、このクラスから継承する必要があります。

コンストラクター

HtmlSelectBuilder()

HtmlSelectBuilder クラスの新しいインスタンスを初期化します。

プロパティ

BindingContainerBuilder

このビルダーが作成するコントロールのバインディング コンテナーに対応するコントロール ビルダーを取得します。

(継承元 ControlBuilder)
BindingContainerType

このビルダーが作成するコントロールのバインディング コンテナーの型を取得します。

(継承元 ControlBuilder)
ComplexPropertyEntries

複合プロパティ エントリのコレクションを取得します。

(継承元 ControlBuilder)
ControlType

作成するコントロールの Type を取得します。

(継承元 ControlBuilder)
CurrentFilterResolutionService

デザイナー上でコントロールを解析したり永続化したりする際に、デバイス フィルター関連サービスを管理するために使用される IFilterResolutionService オブジェクトを取得します。

(継承元 ControlBuilder)
DeclareType

コントロールを宣言するためにコード生成で使用される型を取得します。

(継承元 ControlBuilder)
FChildrenAsProperties

コントロールに ParseChildrenAttributetrue に設定された ChildrenAsProperties があるかどうかを決定する値を取得します。

(継承元 ControlBuilder)
FIsNonParserAccessor

コントロールが IParserAccessor インターフェイスを実装するかどうかを決定する値を取得します。

(継承元 ControlBuilder)
HasAspCode

コントロールにコード ブロックが格納されているかどうかを示す値を取得します。

(継承元 ControlBuilder)
ID

作成するコントロールの識別子プロパティを取得または設定します。

(継承元 ControlBuilder)
InDesigner

ControlBuilder がデザイナーで実行されているかどうかを示す値を返します。

(継承元 ControlBuilder)
InPageTheme

この ControlBuilder オブジェクトを使用してページ テーマを生成するかどうかを示すブール値を取得します。

(継承元 ControlBuilder)
ItemType

バインディング コンテナーに設定される型を取得します。

(継承元 ControlBuilder)
Localize

この ControlBuilder オブジェクトによって作成されるコントロールがローカライズされるかどうかを示すブール値を取得します。

(継承元 ControlBuilder)
NamingContainerType

このビルダーが作成するコントロールの名前付けコンテナーの型を取得します。

(継承元 ControlBuilder)
PageVirtualPath

この ControlBuilder インスタンスによって作成されるページの仮想パスを取得します。

(継承元 ControlBuilder)
Parser

コントロールを解析する TemplateParser を取得します。

(継承元 ControlBuilder)
ServiceProvider

この ControlBuilder オブジェクトのサービス オブジェクトを取得します。

(継承元 ControlBuilder)
SubBuilders

この ControlBuilder オブジェクトの子 ControlBuilder オブジェクトのリストを取得します。

(継承元 ControlBuilder)
TagName

作成するコントロールのタグ名を取得します。

(継承元 ControlBuilder)
TemplatePropertyEntries

テンプレート プロパティ エントリのコレクションを取得します。

(継承元 ControlBuilder)
ThemeResolutionService

デザイン時にコントロールのテーマとスキンを管理するために使用される IThemeResolutionService オブジェクトを取得します。

(継承元 ControlBuilder)

メソッド

AllowWhitespaceLiterals()

HtmlSelect コントロール内の空白のリテラルを処理するか無視するかを決定します。

AppendLiteralString(String)

指定されたリテラル コンテンツをコントロールに追加します。 このメソッドは、ASP.NET ページ フレームワークによって呼び出されます。

(継承元 ControlBuilder)
AppendSubBuilder(ControlBuilder)

コンテナー コントロールに属しているすべての子コントロールの ControlBuilder オブジェクトにビルダーを追加します。

(継承元 ControlBuilder)
BuildObject()

この ControlBuilder オブジェクトによって参照されるコントロールのデザイン時のインスタンスを作成します。

(継承元 ControlBuilder)
CloseControl()

コントロールの開始タグと終了タグの解析が完了したことをビルダーに通知するためにパーサーによって呼び出されます。

(継承元 ControlBuilder)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetChildControlType(String, IDictionary)

Type コントロールの子コントロールの HtmlSelect を取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetObjectPersistData()

この ObjectPersistData オブジェクトの ControlBuilder オブジェクトを作成します。

(継承元 ControlBuilder)
GetResourceKey()

この ControlBuilder オブジェクトのリソース キーを取得します。

(継承元 ControlBuilder)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
HasBody()

コントロールに開始タグと終了タグの両方のタグを含めるかどうかを決定します。 このメソッドは、ASP.NET ページ フレームワークによって呼び出されます。

(継承元 ControlBuilder)
HtmlDecodeLiterals()

HTML コントロールのリテラル文字列を HTML デコードするかどうかを決定します。 このメソッドは、ASP.NET ページ フレームワークによって呼び出されます。

(継承元 ControlBuilder)
Init(TemplateParser, ControlBuilder, Type, String, String, IDictionary)

インスタンス化後、ControlBuilder を初期化します。 このメソッドは、ASP.NET ページ フレームワークによって呼び出されます。

(継承元 ControlBuilder)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
NeedsTagInnerText()

コントロール ビルダーがその内部テキストを取得するかどうかを決定します。 内部テキストを取得する必要がある場合は、SetTagInnerText(String) メソッドを呼び出す必要があります。 このメソッドは、ASP.NET ページ フレームワークによって呼び出されます。

(継承元 ControlBuilder)
OnAppendToParentBuilder(ControlBuilder)

親コントロール ビルダーに追加されることを ControlBuilder に通知します。

(継承元 ControlBuilder)
ProcessGeneratedCode(CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod)

カスタム コントロール ビルダーが、生成された CodeDom (Code Document Object Model) にアクセスし、コントロールの解析とビルドのプロセス中にコードを挿入および更新できるようにします。

(継承元 ControlBuilder)
SetResourceKey(String)

この ControlBuilder オブジェクトのリソース キーを設定します。

(継承元 ControlBuilder)
SetServiceProvider(IServiceProvider)

この ControlBuilder オブジェクトのサービス オブジェクトを設定します。

(継承元 ControlBuilder)
SetTagInnerText(String)

ControlBuilder にコントロール タグの内部テキストを提供します。

(継承元 ControlBuilder)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください