Utilice el control de enlace de ASP+ List
Nikhil Kothari
Microsoft Corporation
Julio de 2000
Resumen: Explique los controles ASP+ Repeater, DataList y DataGrid Server. Estos controles pueden realizar una fuente de datos, interfaz de usuario de la aplicación basada en HTML. Discuta los conceptos relacionados con estos controles y resume los ejemplos básicos del uso de estos controles.
Tabla de contenido
Breve introducción
¿Cómo funciona el control de enlace de la lista?
Control del repetidor
Control de datos
Control de datagrid
Repetidor, Datalista o DataGrid?
Recursos relacionados
Descargue el archivo de ejemplo (56 kb) relacionado con este artículo.
Breve introducción
El repetidor, el control de datos y el control de datos constituyen los conjuntos de control web relacionados en el espacio de nombres en el sistema System.Web.WebControls en el marco ASP+ Page. Estos controles hacen el contenido de la lista de enlace o la fuente de datos de la pantalla HTML. Por lo tanto, se refieren colectivamente a ellos como "controles de enlace de lista".
Similar a otros controles web en el marco, estos controles proporcionan modelos de programación consistentes y encapsulan una lógica representativa independiente del navegador. Estas características permiten a los desarrolladores programar en modelos de objetos sin tener que dominar el conocimiento técnico inconsistente y complejo relacionado con HTML.
Estos tres controles pueden representar el contenido de fuente de datos relacionado con sus fuentes de datos relacionadas de acuerdo con una variedad de diseños (incluidas listas, columnas/columnas de periódicos y diseños de flujo (transmisiones HTML)). Además, también le permiten crear un diseño completamente diferente o completamente personalizado. Además de la lógica del embalaje, también proporciona la función de procesar los datos transmitidos, la gestión del estado de ejecución y los eventos activados. Finalmente, también proporcionan diferentes niveles de soporte para operaciones estándar, como selección, edición, paginación y clasificación. Estos controles pueden simplificar varias aplicaciones web comunes, incluidos informes, carritos de compras, listas de productos, resultados de consultas y menús de navegación.
A continuación se ilustrará aún más estos controles y cómo usarlos en sus aplicaciones web y cómo elegir controles.
¿Cómo funciona el control de enlace de la lista?
Esta sección es el material de fondo del resto de este artículo. Descripción general Los métodos de trabajo de estos controles de enlace de listas, sus características comunes y ciertos conceptos relacionados.
Atributo de fuente de datos
Cada control tiene un atributo de fuente de datos con su tipo es System.Collections.icollection. En las palabras más simples, las fuentes de datos son una lista o colección de objetos similares.
Varios objetos en este marco proporcionan la implementación de iCollection. Esta colección incluye System.Data.Dataview (generalmente se usa para acceder a bases de datos relacionales y datos XML), implementación general de ICollection (como ArrayList y Hashtable) y matriz.
A diferencia de los controles de enlace de datos tradicionales (generalmente necesitan conjuntos de registros ADO), excepto para implementar la interfaz ICollection, estos controles de enlace de la lista no fortalecen ningún otro requisito para sus fuentes de datos. Según el diseño, el tipo y la estructura de datos que pueden usarse como un valor de atributo de plato de datos válido a través de una gran cantidad, y pueden maximizar la flexibilidad simple y flexibilidad para su código de aplicación.
Colección de proyectos
Cada control de enlace de lista contiene un conjunto de proyectos. El control se establece en su recopilación de proyectos al enumerar la fuente de datos actual de estos objetos. Cree un solo elemento para cada objeto y úselo para representar el objeto. Estos elementos son parte de la estructura jerárquica de control contenida en el control de enlace de la lista.
La siguiente tabla enumera el tipo de proyecto asociado con la fuente de datos.
El tipo de proyecto predeterminado creado por el proyecto
AlternatingItem es la creación de proyectos con ofertas impares en la colección de proyectos
SelectedItem se crea para el proyecto seleccionado (independientemente de si el proyecto es un proyecto alternativo)
EditItem se crea para proyectos en el modo de edición (ya sea seleccionado o alternativo)
El control se creará al mismo tiempo en los siguientes elementos que se utilizarán. Sin embargo, no están asociados con los datos de la fuente de datos.
El encabezado se utiliza para representar la información del encabezado
La nota al pie se usa para indicar la información de pie.
Los separadores se utilizan para representar el contenido entre cada elemento que se muestra en la Figura 1, y solo es aplicable al repetidor y al datalista
El símbolo de paginación se usa para indicar la interfaz de usuario de paginación asociada con el control de datagrid
Figura 1. En comparación con la colección "Proyecto" de la colección "Control"
Enlace y creación de datos del proyecto
El control de enlace de la lista sigue el modelo de enlace de datos explícito implementado en todo el marco ASP+. Esto significa que el control solo debe enumerarse cuando se llama al método de datos.
Cuando se llama al método Databind, el control de la lista enumerará su fuente de datos, creará un proyecto e inicializará extrayendo el valor de su fuente de datos. Si la administración de estado está habilitada, el control también guardará toda la información requerida para volver a crear su proyecto durante el período de procesamiento de retorno de la página sin volver a establecer la fuente de datos.
El modelo de enlace de datos explícito permite que su código de aplicación determine con precisión cuándo y dónde se necesita la fuente de datos en la secuencia de procesamiento. Esta característica hace que el acceso a los servidores de bases de datos sea cada vez más eficiente, y estos acceso suelen ser la operación más consumida de aplicaciones web.
La regla general es que el datos debe llamarse cuando necesite volver a crear el proyecto. En la mayoría de los casos, llamará a Databind cuando se solicite a su página que cree una colección de proyectos inicial por primera vez. Durante la ejecución de seguimiento de esta página, deberá llamar a este método en varios procedimientos de procesamiento de eventos que cambian la colección del proyecto. Esto sucede cuando la consulta utilizada para crear la fuente de datos inicial puede ocurrir. Esto también puede suceder cuando cambia el estado del proyecto (como cambiar de solo al modo de edición).
estilo
Mediante el uso de atributos de estilo en el modelo de objeto, puede definir todos los controles de datos y datagrid y los formatos y apariencias que contiene. Estos atributos pueden personalizar fuentes, colores, bordes y otros factores de apariencia. El atributo de estilo del control en sí (como el color de primer plano, el color de fondo, la fuente y el estilo de borde) afectará la representación de todo el control.
Además, cada control contiene una gran cantidad de atributos de estilo que coinciden con los tipos de elementos que creó, como el estilo itemStyle, alternoTemstyle y Headersstyle. DataGrid ofrece atributos de estilo de tercer nivel que afectan todas las celdas en columnas específicas. Cada columna contiene en el control puede tener su propio estilo HeadLderstyle, PastormoTerTy y ItemStyte.
plantilla
Se muestra el formato de control de estilo, mientras que la plantilla define el contenido y la representación de cada elemento. Puede pensar en la plantilla como una hoja de código HTML, que define la estructura jerárquica de control utilizada para representar el proyecto.
Los controles del repetidor y los datos de datos son impulsados por sus plantillas especificadas para proporcionar varias propiedades de plantillas establecidas, como itemTemplate, alternatingItemtemplate y HeaderTemplate. Similar al estilo, cada plantilla corresponde a un tipo específico de proyecto.
El control de datagrid no es plantilla. Sin embargo, las templateColumns en la colección de columnas del control hacen que el uso de plantillas en DataGrid. Cada celda en TemplateColum puede contener una plantilla, que es muy similar a los elementos en el repetidor o el control de datos. Esto también hace posible la personalización en DataGrid.
Enlace de datos en la plantilla
La estructura jerárquica de control contenida en los elementos de definición de plantilla. Al usar expresiones de enlace de datos, los atributos de control en esta estructura de nivel pueden estar unidos a las propiedades de datos asociadas con este proyecto.
El proyecto lógico de nivel principal como plantilla se llama "contenedor" en la expresión de enlace de datos. Cada contenedor tiene un atributo llamado DataItem, que cita sus datos asociados. Como resultado, la mayoría de las expresiones de enlace de datos típicas en la plantilla unen los atributos de control en una determinada propiedad del contenedor. Esta vinculación se explicará más a fondo en los siguientes ejemplos.
Control del repetidor
Como se mencionó anteriormente, el control del repetidor está completamente impulsado por la plantilla, lo que permite una representación y diseño completamente personalizados. La siguiente figura ilustra esta función.
Figura 2. Lista de enlaces de símbolos de proyecto vinculados generados con el control del repetidor
Extraído de Repeater1.aspx:
<%@page lenguaje = c# src = rerepater1.cs heredes = samples.repeter1page%>
Elástico
<ASP: Repeater Runat = Server ID = LinkSlistRepater
dataSource = '< %# SiteElinks %>'>
<Nombre de plantilla = HeaderTemplate>
<ul type = 1>
</template>
<Nombre de plantilla = itemTemplate>
<li>
<ASP: Hyperlink runat = servidor
text = '< %# databinder.eval.eval (Container.dataitem, sitio) %>'
navigateUrl = '< %# databinder.eval.eval.dataitem, siteUrl) %>'>
</ASP: Hyperlink>
</li>
</template>
<Nombre de plantilla = FooterTemplate>
</ul>
</template>
</ASP: Repetidor>
Este archivo .aspx mostró una declaración de generar un control de repetidor para generar una lista de símbolos del proyecto.
Este ejemplo ilustra el método de instrucción para configurar la fuente de datos con la sintaxis de enlace de datos (<%#...%>). Cuando llama al método Databind, se ejecuta la expresión en el enlace de datos. En este caso, la propiedad de la fuente de datos del repetidor está vinculada a la propiedad de Sitelinks en la página, y esta última contiene la referencia de URL que se mostrará.
El repetidor es el único control que permite que los fragmentos HTML existan en su plantilla. En este ejemplo, la lista de símbolos del proyecto se divide en tres partes:
Iniciado por la lista de HeadERTemplate (<UL Type = 1>).
Finalice la etiqueta (</ul>) por la lista representada por FooterTemplate.
El cuerpo principal de la lista se coloca desde el elemento de la lista (<li>) generado repitiendo el elemento de plantilla en cada objeto en el conjunto de enlaces de sitio.
También puede usar estas plantillas para especificar la marca de inicio (<Babl>) en el encabezado, la etiqueta final (</table>) especifica la tabla en la nota al pie y especificar una sola línea de reloj en cada proyecto (<Ete>) Esencia Esta opción de reemplazo conducirá a la representación de la lista.
Debe especificar itemTemplate. Es la única plantilla necesaria. Cuando no se especifican otras plantillas, el control utilizará automáticamente esta MEMPLACIÓN DE IMETA para otras plantillas.
En el siguiente ejemplo, Elemtemplate contiene un control web de hipervínculo. Los atributos de texto y navegación de este control están vinculados a las propiedades de datos asociadas con cada proyecto duplicado. Esto se completa utilizando la expresión de enlace de datos (buscando inmediatamente la expresión después de crear un proyecto).
Repetidor1.cs:
muestras de espacio de nombres {
Elástico
Public Class Repeater1Page: Página {
Repetido protegido LinkSlistrImistrepater;
Public iCollection SiteElinks {
conseguir {
ArrayList Sites = new ArrayList ();
Sites.Add (nuevo SiteInfo (Microsoft Home,
http://www.microsoft.com);
Sites.Add (nuevo SiteInfo (MSDN Home,
http://msdn.microsoft.com);
Sites.Add (nuevo SiteInfo (Página de inicio de MSN,
http://www.msn.com));
Sites.Add (nuevo SiteInfo (Hotmail,
http://www.hotmail.com));
Sitios de regreso;
}
}
Anulación protegida void overoad (EventArgs e) {{
base.onload (e);
if (! isPostback) {
// Cuando se solicita la página por primera vez, se realiza el enlace de datos.
// Esto llamará a cada control de manera recursiva en la estructura jerárquica de control de esta página.
databind ();
}
}
}
Sitio de clase pública sellada {
Sitio de cadena privada;
Sitio de cadena privada;
public SiteInfo (String Sitename, String SiteUrl) {{
this.siteName = Sitename;
this.siteUrl = SiteUrl;
}
Sitio de cadena pública {
Obtener {sitio de retorno;}
}
public String SiteUrl {
Geturn SiteUrl;}
}
}
}
Este archivo .cs contiene el código que aparece juntos en la página ASPX en la lista anterior.
La clase Repeater1Page cubre el método de Onload de la clase de página. Esto indica que Databind se llama en la primera solicitud de esta página. Esto hará que la expresión de enlace de datos en estas páginas valore los datos y haga de la lista de control del repetidor la fuente de los datos y cree sus proyectos. Llame al método de datos solo cuando la primera solicitud. La razón por la cual esto puede funcionar es porque el repetidor puede volver a crear su proyecto en el proceso de retorno de estado preservado antes, sin la necesidad de instancias de origen de datos.
Esta página revela los atributos públicos del tipo iCollection. Esto se utilizará en la expresión de enlace de datos del valor del atributo de plato de datos del repetidor. La adquisición de atributos utiliza ArrayList que contiene un conjunto de secuencias SiteInfo. Este atributo es público, porque solo las páginas de miembros públicos y de protección pueden usarse en expresiones de enlace de datos.
Cada objeto SiteInfo tiene dos atributos: Sitename y SiteUrl. Cuando el enlace de datos del control de hipervínculo en la plantilla, acceda a estos atributos. En la expresión de unión de este control, Container.Dataitem dijo que es necesario vincular un elemento específico a un solo objeto SiteInfo en él. Databinder.eval (Container.dataitem, Sitename) visita la propiedad Sitename del objeto SiteoInfo actual.
Repeater1 Ejemplo le presenta varios conceptos básicos:
Plantilla de definición
Gramática de enlace de datos y expresión de enlace de datos en la plantilla
Utilice la iCollection de ArrayList como fuente de datos
Llame al método de datos durante la página de procesamiento inicial
Control de datos
El control de datos es un control orientado a la plantilla que proporciona la capacidad de usar atributos de estilo para formatear su capacidad. También puede producir múltiples columnas. La Figura 3 ilustra estas dos características.
Figura 3. Ejemplos generados a partir de columnas duales de DataList
Extracto de DataList1.aspx:
<%@page lenguaje = c# src = dataList1.cs heredes = samples.datalist1page%>
Elástico
<ASP: DataList runat = servidor id = peicalDatalist
Repetircolumns = 2 repetirdirection = vertical repetmode = tabla
Ancho = 100%>
<Poperty name = alternaTingItemStyle>
<ASP: TableItemStyle BackColor =#Elyeee/>
</propiedad>
<Nombre de plantilla = itemTemplate>
<ASP: panel runat = servidor font-size = 12pt font-bold = true>
< %# ((Persona) contenedor.dataitem) .name %>
</ASP: Panel>
<ASP: etiqueta runat = server width = 20px
BorderStyle = sólido borderwidth = 1px borderColor = negro
backcolor = '< %# ((persona) contenedor.dataitem).
</ASP: Etiqueta>
<ASP: etiqueta runat = servidor font-size = 10pt
Text = '< %# getColorname ((persona) Container.dataitem).
</ASP: Etiqueta>
</template>
</ASP: DataList>
Este archivo .aspx mostró una declaración de datos utilizada para generar este ejemplo.
En este ejemplo, el diseño de la columna múltiple de DataList se logra estableciendo la propiedad RepeTColumns en "2". Configurar la Dirección Repeplante como "vertical" hará que el proyecto haga arreglos de arriba a abajo, y luego se arregle de izquierda a derecha. Por el contrario, el valor establecido en "Horizontal" hará que el proyecto se organice de izquierda a derecha, y luego de arriba a abajo.
La sintaxis ASPX contiene configuraciones para algunos atributos de estilo dataLista. En este ejemplo, el ancho de Datalist está establecido en el 100%de su nivel principal. El estilo alternativo con un fondo gris es obtener una apariencia a rayas. Este ejemplo también muestra que la plantilla puede contener cualquier definición de control compleja para satisfacer las necesidades de obtener el diseño ideal en cada proyecto.
Finalmente, la expresión de enlace de datos en esta plantilla se une en la etapa temprana al convertir el contenedor. Dataitem en su tipo. Esto no causará la unión posterior de la unión posterior de la unión posterior del uso del databinder.Eval (como se muestra en Repeater1). Sin embargo, este método puede producir poca legibilidad. El siguiente ejemplo también ofrece un ejemplo de expresión que llama al método GetColorname (este método se implementa en un archivo admitido en esta página).
datalist1.cs:
muestras de espacio de nombres {
Elástico
Public Class DataList1Page: Página {
Popledalista de datos de datos protegidos;
Cadena protegida getColorname (color c) {
Devolver
Typedescriptor.getConverter (typeof (color)).
}
Prive void loadPeicallist () {
// crear una fuente de datos
Persona [] personas = nueva persona [] {
Nueva persona (Nikhil Kothari, color.green),
Nueva persona (Steve Millet, color.purple), color.purple),
Nueva persona (Chris Anderson, color.blue), color.blue,
Nueva persona (Mike Pope, color.orange),
Nueva persona (Anthony Moore, color.yllow),
Nueva persona (Jon Jung, color.mediumaquamarine),
Nueva persona (Susan Warren, color.slateBlue),
Nueva persona (Izzy Gryko, color.rod)
};
// Establecer la fuente de datos del control
peicaldatalist.dataSource = Pesple;
// y hacer que el control use esta fuente de datos para construir su proyecto
peicaldatalist.databind ();
}
Anulación protegida void overoad (EventArgs e) {{
base.onload (e);
if (! isPostback) {
// vea esta página por primera vez
LoadPeicallist ();
}
}
}
Persona de clase pública sellada {
Nombre de cadena privada;
PRive Color Favoritecolor;
Persona pública (Nombre de cadena, Color Favoritecolor) {{
this.name = name;
this.favoritecolor = favoritecolor;
}
Public Color Favoritecolor {
geturn favoritoColor;}
}
Nombre de cadena pública {
nombre de geturn;}
}
}
}
En esta página, el atributo de plato de datos del control se establece a través de la configuración del programa, que se resuelve en el archivo ASPX. Los resultados de los dos métodos son los mismos. Qué tipo de método no se puede seleccionar, debe llamar al método de datos para que el control pueda enumerar sus fuentes de datos y crear elementos que desee indicar.
La fuente de datos utilizada en este ejemplo es una matriz simple de objeto de persona. Debido a que cada matriz implementa el método de Icollection, la matriz es adecuada para la fuente de datos. Esto muestra la flexibilidad que se puede obtener cuando se puede obtener la estructura y el tipo de datos cuando se puede obtener la fuente de datos.
DataList1 Ejemplo presenta los siguientes conceptos:
Defina la rica interfaz de usuario HTML en la plantilla
Use una matriz simple como fuente de datos
Establezca la fuente de datos a través del programa
Varias expresiones permitidas en la sintaxis de enlace de datos