Compartilhar via


HtmlSelectBuilder Classe

Definição

Interage com o analisador para criar um HtmlSelect controle.

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
Herança
HtmlSelectBuilder

Exemplos

O exemplo de código a seguir demonstra como criar um controle personalizado HtmlSelectBuilder que define dois tipos de <option> elementos filho de um controle personalizado HtmlSelect e processa cada tipo de forma diferente.

<%@ 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

Comentários

O HtmlSelectBuilder controle interage com o analisador de páginas para criar um HtmlSelect controle. Use o HtmlSelectBuilder controle para personalizar a análise de um HtmlSelect controle.

A AllowWhitespaceLiterals() propriedade é definida para false que o espaço em branco seja sempre ignorado. Use o GetChildControlType método para determinar o tipo de HtmlSelect controles filho do controle do controle.

Notas aos Herdeiros

Para criar um construtor de controle personalizado para um HtmlSelect controle, você precisa herdar dessa classe.

Construtores

Nome Description
HtmlSelectBuilder()

Inicializa uma nova instância da classe HtmlSelectBuilder.

Propriedades

Nome Description
BindingContainerBuilder

Obtém o construtor de controle que corresponde ao contêiner de associação para o controle que esse construtor cria.

(Herdado de ControlBuilder)
BindingContainerType

Obtém o tipo do contêiner de associação para o controle que esse construtor cria.

(Herdado de ControlBuilder)
ComplexPropertyEntries

Obtém uma coleção de entradas de propriedade complexas.

(Herdado de ControlBuilder)
ControlType

Obtém o Type controle a ser criado.

(Herdado de ControlBuilder)
CurrentFilterResolutionService

Obtém um IFilterResolutionService objeto usado para gerenciar serviços relacionados ao filtro de dispositivo ao analisar e persistir controles no designer.

(Herdado de ControlBuilder)
DeclareType

Obtém o tipo que será usado pela geração de código para declarar o controle.

(Herdado de ControlBuilder)
FChildrenAsProperties

Obtém um valor que determina se o controle tem um ParseChildrenAttribute com definido ChildrenAsProperties como true.

(Herdado de ControlBuilder)
FIsNonParserAccessor

Obtém um valor que determina se o controle implementa a IParserAccessor interface.

(Herdado de ControlBuilder)
HasAspCode

Obtém um valor que indica se o controle contém blocos de código.

(Herdado de ControlBuilder)
ID

Obtém ou define a propriedade do identificador para o controle a ser criado.

(Herdado de ControlBuilder)
InDesigner

Retorna se o ControlBuilder designer está em execução.

(Herdado de ControlBuilder)
InPageTheme

Obtém um valor booliano que indica se esse ControlBuilder objeto é usado para gerar temas de página.

(Herdado de ControlBuilder)
ItemType

Obtém o conjunto de tipos no contêiner de associação.

(Herdado de ControlBuilder)
Localize

Obtém um valor booliano que indica se o controle criado por esse ControlBuilder objeto é localizado.

(Herdado de ControlBuilder)
NamingContainerType

Obtém o tipo do contêiner de nomenclatura para o controle que esse construtor cria.

(Herdado de ControlBuilder)
PageVirtualPath

Obtém o caminho virtual de uma página a ser criada por essa ControlBuilder instância.

(Herdado de ControlBuilder)
Parser

Obtém o TemplateParser responsável por analisar o controle.

(Herdado de ControlBuilder)
ServiceProvider

Obtém o objeto de serviço para este ControlBuilder objeto.

(Herdado de ControlBuilder)
SubBuilders

Obtém uma lista de objetos filho ControlBuilder para este ControlBuilder objeto.

(Herdado de ControlBuilder)
TagName

Obtém o nome da marca para o controle a ser criado.

(Herdado de ControlBuilder)
TemplatePropertyEntries

Obtém uma coleção de entradas de propriedade de modelo.

(Herdado de ControlBuilder)
ThemeResolutionService

Obtém um IThemeResolutionService objeto usado no tempo de design para gerenciar temas de controle e peles.

(Herdado de ControlBuilder)

Métodos

Nome Description
AllowWhitespaceLiterals()

Determina se os literais de espaço em branco em um HtmlSelect controle devem ser processados ou ignorados.

AppendLiteralString(String)

Adiciona o conteúdo literal especificado a um controle. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
AppendSubBuilder(ControlBuilder)

Adiciona construtores ao ControlBuilder objeto para quaisquer controles filho que pertençam ao controle de contêiner.

(Herdado de ControlBuilder)
BuildObject()

Cria uma instância de tempo de design do controle que é referenciado por esse ControlBuilder objeto.

(Herdado de ControlBuilder)
CloseControl()

Chamado pelo analisador para informar ao construtor que a análise das marcas de abertura e fechamento do controle está concluída.

(Herdado de ControlBuilder)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetChildControlType(String, IDictionary)

Obtém os Type controles filho do controle para o HtmlSelect controle filho do controle.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetObjectPersistData()

Cria o ObjectPersistData objeto para este ControlBuilder objeto.

(Herdado de ControlBuilder)
GetResourceKey()

Recupera a chave de recurso deste ControlBuilder objeto.

(Herdado de ControlBuilder)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HasBody()

Determina se um controle tem uma marca de abertura e fechamento. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
HtmlDecodeLiterals()

Determina se a cadeia de caracteres literal de um controle HTML deve ser decodificada em HTML. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
Init(TemplateParser, ControlBuilder, Type, String, String, IDictionary)

Inicializa o ControlBuilder para uso depois de instanciado. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
NeedsTagInnerText()

Determina se o construtor de controle precisa obter seu texto interno. Nesse caso, o SetTagInnerText(String) método deve ser chamado. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
OnAppendToParentBuilder(ControlBuilder)

Notifica que ControlBuilder ele está sendo adicionado a um construtor de controle pai.

(Herdado de ControlBuilder)
ProcessGeneratedCode(CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod)

Permite que os construtores de controle personalizados acessem o CodeDom (CodeDom) gerado e insiram e modifiquem o código durante o processo de análise e criação de controles.

(Herdado de ControlBuilder)
SetResourceKey(String)

Define a chave de recurso para este ControlBuilder objeto.

(Herdado de ControlBuilder)
SetServiceProvider(IServiceProvider)

Define o objeto de serviço para este ControlBuilder objeto.

(Herdado de ControlBuilder)
SetTagInnerText(String)

Fornece o ControlBuilder texto interno da marca de controle.

(Herdado de ControlBuilder)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também