Compartir vía


HtmlSelectBuilder Clase

Definición

Interactúa con el analizador para compilar un control 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
Herencia
HtmlSelectBuilder

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un control personalizado HtmlSelectBuilder que define dos tipos de <option> elementos secundarios de un control personalizado HtmlSelect y, a continuación, procesa 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

Comentarios

El HtmlSelectBuilder control interactúa con el analizador de páginas para crear un HtmlSelect control. Use el HtmlSelectBuilder control para personalizar el análisis de un HtmlSelect control.

La AllowWhitespaceLiterals propiedad se establece false en para que siempre se omita el espacio en blanco. Use el GetChildControlType método para determinar el tipo de los HtmlSelect controles secundarios del control.

Notas a los desarrolladores de herederos

Para crear un generador de controles personalizado para un HtmlSelect control, debe heredar de esta clase.

Constructores

HtmlSelectBuilder()

Inicializa una nueva instancia de la clase HtmlSelectBuilder.

Propiedades

BindingContainerBuilder

Obtiene el generador de controles que corresponde al contenedor de enlace para el control que este generador crea.

(Heredado de ControlBuilder)
BindingContainerType

Obtiene el tipo de contenedor de enlace para el control que crea este generador.

(Heredado de ControlBuilder)
ComplexPropertyEntries

Obtiene una colección de entradas de propiedad complejas.

(Heredado de ControlBuilder)
ControlType

Obtiene el Type del control que se va a crear.

(Heredado de ControlBuilder)
CurrentFilterResolutionService

Obtiene un objeto IFilterResolutionService utilizado para administrar servicios relacionados con filtros de dispositivos cuando se analizan y se conservan controles en el diseñador.

(Heredado de ControlBuilder)
DeclareType

Obtiene el tipo que utilizará la generación de código para declarar el control.

(Heredado de ControlBuilder)
FChildrenAsProperties

Obtiene un valor que determina si el control tiene un objeto ParseChildrenAttribute con ChildrenAsProperties establecida en true.

(Heredado de ControlBuilder)
FIsNonParserAccessor

Obtiene un valor que determina si el control implementa la interfaz de IParserAccessor.

(Heredado de ControlBuilder)
HasAspCode

Obtiene un valor que indica si el control contiene bloques de código.

(Heredado de ControlBuilder)
ID

Obtiene o establece la propiedad de identificador del control que se va a crear.

(Heredado de ControlBuilder)
InDesigner

Devuelve un valor que indica si se está ejecutando ControlBuilder en el diseñador.

(Heredado de ControlBuilder)
InPageTheme

Obtiene un valor booleano que indica si este objeto ControlBuilder se utiliza para generar temas de página.

(Heredado de ControlBuilder)
ItemType

Obtiene el tipo establecido en el contenedor de enlace.

(Heredado de ControlBuilder)
Localize

Obtiene un valor booleano que indica si se adapta el control creado por el objeto ControlBuilder.

(Heredado de ControlBuilder)
NamingContainerType

Obtiene el tipo de contenedor de nomenclatura para el control que este generador crea.

(Heredado de ControlBuilder)
PageVirtualPath

Obtiene la ruta de acceso virtual de una página que se va a compilar por esta instancia de ControlBuilder.

(Heredado de ControlBuilder)
Parser

Obtiene el objeto TemplateParser responsable de analizar el control.

(Heredado de ControlBuilder)
ServiceProvider

Obtiene el objeto de servicio para el objeto ControlBuilder.

(Heredado de ControlBuilder)
SubBuilders

Obtiene una lista de los objetos ControlBuilder secundarios para este objeto ControlBuilder.

(Heredado de ControlBuilder)
TagName

Obtiene el nombre de etiqueta del control que se va a crear.

(Heredado de ControlBuilder)
TemplatePropertyEntries

Obtiene una colección de entradas de propiedad de plantilla.

(Heredado de ControlBuilder)
ThemeResolutionService

Obtiene un objeto IThemeResolutionService utilizado en tiempo de diseño para administrar temas y máscaras de controles.

(Heredado de ControlBuilder)

Métodos

AllowWhitespaceLiterals()

Determina si los literales de espacio en blanco de un control HtmlSelect deben procesarse u omitirse.

AppendLiteralString(String)

Agrega el contenido literal especificado a un control. El marco de trabajo de la página ASP.NET llama a este método.

(Heredado de ControlBuilder)
AppendSubBuilder(ControlBuilder)

Agrega generadores al objeto ControlBuilder para todos los controles secundarios que pertenecen al control contenedor.

(Heredado de ControlBuilder)
BuildObject()

Crea una instancia en tiempo de diseño del control referida por este objeto ControlBuilder.

(Heredado de ControlBuilder)
CloseControl()

Llamado por el analizador para informar al generador de que el análisis de las etiquetas de apertura y cierre del control ha finalizado.

(Heredado de ControlBuilder)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetChildControlType(String, IDictionary)

Obtiene el Type de los controles secundarios del control HtmlSelect.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectPersistData()

Crea el objeto ObjectPersistData para este objeto ControlBuilder.

(Heredado de ControlBuilder)
GetResourceKey()

Recupera la clave de recurso para el objeto ControlBuilder.

(Heredado de ControlBuilder)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
HasBody()

Determina si un control tiene etiquetas de apertura y cierre. El marco de trabajo de la página ASP.NET llama a este método.

(Heredado de ControlBuilder)
HtmlDecodeLiterals()

Determina si la cadena literal de un control HTML debe descodificarse en HTML. El marco de trabajo de la página ASP.NET llama a este método.

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

Inicializa el objeto ControlBuilder para su utilización después de haber creado una instancia. El marco de trabajo de la página ASP.NET llama a este método.

(Heredado de ControlBuilder)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
NeedsTagInnerText()

Determina si el generador de controles necesita obtener su texto interno. Si es así, debe llamarse al método SetTagInnerText(String). El marco de trabajo de la página ASP.NET llama a este método.

(Heredado de ControlBuilder)
OnAppendToParentBuilder(ControlBuilder)

Notifica el ControlBuilder que se agrega a un generador de controles principales.

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

Permite a los generadores de controles personalizados el acceso al objeto CodeDom (Code Document Object Model) generado y la inserción y modificación del código durante el proceso de análisis y compilación de controles.

(Heredado de ControlBuilder)
SetResourceKey(String)

Establece la clave de recurso para el objeto ControlBuilder.

(Heredado de ControlBuilder)
SetServiceProvider(IServiceProvider)

Establece el objeto de servicio para el objeto ControlBuilder.

(Heredado de ControlBuilder)
SetTagInnerText(String)

Proporciona el ControlBuilder con el texto interno de la etiqueta del control.

(Heredado de ControlBuilder)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también