Control de datagrid
DataGrid Control le permite generar una lista de formato de origen de datos rico. Además, también admite elementos de selección con otras operaciones.
Los cuatro ejemplos de esta sección usan tablas que incluyen la información del título (título, ID de título, autor, precio y fecha de publicación). Todos los datos se mantienen con XML en titlesdb.xml. Al establecer una página para representar el contenido de esta tabla y seleccionar libros, estos ejemplos siguen el método incremental. La lista de códigos contiene el texto del cuerpo negro para indicar el cambio realizado por una muestra integrada en el ejemplo anterior.
Prueba de titlesdb.xml:
<Root>
<Schema ID = DocumentEelement TargetNamesPace =
xmlns = http://www.w3.org/1999/xmlschema
xmlns: msdata = urn: schemas-microsoft-com: xml-msdata>
<name de elemento = tabla>
<Complextype content = ElementsOnly>
<elemento name = title_id type = string> </elemento>
<elemento name = title type = string> </elemento>
<elemento name = au_name type = string> </elemento>
<Element Name = Price MSData: DataType = System.Currency
Minocomos = 0
Type = string> </ememem>
<Element Name = PubDate Type = TimeInstant> </elemento>
</Complextype>
<nique name = titLeConstraint msData: primario = true>
<selector>.
<field> title_id </field>
</sóbulo>
</Elemento>
</chema>
<DocumentElement>
<title>
<title_id> bu1032 </title_id>
<title> La guía de la base de datos del Ejecutivo ocupado </title>
<um_name> Marjorie Green </au_name>
<precio> 19.99 </pree>
<Bubdate> 1991-06-12T07: 00: 00 </pubdate>
</title>
Elástico
</documentelement>
</root>
En una aplicación web típica, para obtener la máxima escalabilidad y rendimiento, es probable que use servicios web o objetos comerciales para acceder a los datos. Para simplificar estos ejemplos y centrarnos en usar DataGrid en lugar de acceso a datos, elegimos cargar datos al mismo tiempo cuando se inicia la aplicación, y en el estado de la aplicación ASP en Global.Asax Show.
Trunk de Global.asax:
public void Application_onStart () {) {)
FileStream FS = NULL;
DataSet ds = null;
intentar {
FS = nuevo FileStream (Server.Mappath (titlesdb.xml), fileMode.open,
Fileaccess.read);
ds = new DataSet ();
// Cargue los datos en el archivo XML al conjunto de datos
ds.Readxml (FS);
} Finalmente {
if (fs! = null) {
fs.close ();
fs = nulo;
}
}
// Cchestrate el conjunto de datos a alta velocidad al estado de la aplicación para que pueda usarse en una sola página
Aplicación [TitlesDataSet] = ds;
}
datagrid1
DataGrid1 ilustra el uso básico de DataGrid, que explica cómo el control utiliza el menos código de usuario para generar una función rica.
HIGO
Insertar desde dataGrid1.aspx:
<%@page idioma = c# src = dataGrid.cs heredes = samples.dataGridPage%>
Elástico
<ASP: DataGrid Runat = Server ID = TitlesGrid>
</ASP: DataGrid>
El archivo .aspx anterior mostró una declaración sin ningún atributo sin ningún atributo del control DataGrid.
dataGrid.cs:
muestras de espacio de nombres {
Elástico
Public Class DataGridPage: Página {
TitlesGrid de DataGrid protegido;
Public iCollection getTitlesList () {
// Retore la lista de títulos del conjunto de datos de caché de alta velocidad en el estado de la aplicación.
DataSet titlesDataSet = (DataSet) Aplicación [TitlesDataSet];
if (titlesDataSet! = null) {
Return titlesDataSet.tables [título] .defaultView;
}
demás {
Regresar nulo;
}
}
Private void loadTitlesGrid () {) {)
// Búsqueda de datos de la base de datos
iCollection titlesList = getTitlesList ();
// Establecer la fuente de datos del control
titlesgrid.dataSource = titleslist;
// y hacer que use esta fuente de datos para construir su proyecto
titlesgrid.databind ();
}
Anulación protegida void overoad (EventArgs e) {{
base.onload (e);
if (! isPostback) {
// vea esta página por primera vez
loadTitlesGrid ();
}
}
}
}
El archivo .cs contiene el código utilizado para esta página. Este código es el mismo que la función de código utilizada en el ejemplo DataList1. En la primera solicitud de esta página, cubre el método en línea para recuperar datos y establecer la propiedad de la fuente de datos del control antes de llamar a Databind. Esto hará que DataGrid cree su proyecto, que son filas necesarias en la tabla. En el proceso de regreso del procesamiento, DataGrid redactó el proyecto desde el estado (este estado incluye el contenido de la celda guardado en la última solicitud).
Este ejemplo ilustra la función de la propiedad AutogenerateColumns del control de datagrid. El valor predeterminado de este atributo es verdadero. Cuando se establece en True, DataGrid usará Reflection para verificar su fuente de datos y objetos y crear una columna para cada atributo o campo público. En este ejemplo, el control representa todos los campos actuales en la tabla "Título". Esta característica permite que la lista del código de usuario menor genere una lista de cualquier fuente de datos de manera rápida y fácil.
Cada tipo de columna automática es BoundColumn. Este tipo de columna convierte el valor del atributo asociado con él en una cadena que debe usarse como ventana.
datagrid2
DataGrid2 explica el conjunto DataGrid por las columnas establecidas en el archivo .aspx.
Figura 5. Ejemplos generados mediante el uso de la columna especificada DataGrid
Extracto de DataGrid2.aspx:
<%@page idioma = c# src = dataGrid.cs heredes = samples.dataGridPage%>
Elástico
<ASP: DataGrid Runat = Server ID = TitlesGrid
AutogenerateColumns = falso>
<Nombre de Poperty = columnas>
<ASP: BoundColumn HeadElText = Title DataField = Title/>
<ASP: BoundColumn HeadElText = Autor datafield = au_name/>
<ASP: BoundColumn Headtext = Date Publicado DataField = PubDate/>
<ASP: BoundColumn HeadElText = Price DataField = Price/>
</propiedad>
</ASP: DataGrid>
Este archivo .aspx mostró un control DataGrid con una columna establecida por los usuarios. Este ejemplo utiliza los mismos archivos compatidos con código que DataGrid1 porque no se requiere ningún código.
La propiedad AutoGrageRateColumns de DatoGrid está configurada para fingir, para evitar que el control genere automáticamente columnas, y permite a los usuarios ser responsables de definir columnas que se representarán en la tabla.
Hay muchos beneficios:
Puede controlar el orden de las columnas. Lista en el orden de una declaración. Por otro lado, la columna automática está representada por el orden recuperado por la imagen.
Puede especificar el encabezado de cada columna con la propiedad de texto de cabeza de columna. En el ejemplo anterior, el encabezado de la etiqueta indica el nombre del campo, que puede no ser apropiado. Al usar controles en este modo, Columbns también ofrece otros atributos establecidos.
El tipo de columna automática siempre es BoundColumn. Especifique el conjunto de columna para que el usuario pueda controlar el tipo de cada columna.
datagrid3
DataGrid3 se basa en DataGrid2 agregando formateo visual y formateo.
Figura 6. Ejemplos generados por la datagrid que establece los atributos de estilo y formato
Extracto de DataGrid3.aspx:
<%@page idioma = c# src = dataGrid.cs heredes = samples.dataGridPage%>
Elástico
<ASP: DataGrid Runat = Server ID = TitlesGrid
AutogenerateColumns = falso
Ancho = 80%
backcolor = blanco
borderwidth = 1px BorderStyle = sólido CellPadding = 2 Cellspacing = 0
BorderColor = Tan
font-name = sancy style font-size = 8pt>
<Nombre de Poperty = columnas>
<ASP: BoundColumn HeadElText = Title DataField = Title/>
<ASP: BoundColumn HeadElText = Autor datafield = au_name/>
<ASP: BoundColumn Headtext = Date Publicado DataField = PubDate
dataFormatString = {0: mmm yyyy}/>
<ASP: BoundColumn HeadElText = Price DataField = Price
DataFormatString = {0: c}>
<Poperty name = itemStyle>
<ASP: TableItemStyle horizontalalign = right/>
</propiedad>
</ASP: BoundDColumn>
</propiedad>
<Poperty Name = Headstyle>
<ASP: TableItemStyle BackColor = Darkred ForeColor = White
Font-Black = True/>
</propiedad>
<Poperty name = itemStyle>
<ASP: TableItemStyle ForeColor = DarkslateBlue/>
</propiedad>
<Poperty name = alternaTingItemStyle>
<ASP: TableItemStyle BackColor = beige/>
</propiedad>
</ASP: DataGrid>
Este archivo .aspx mostró la misma declaración de control DataGrid que la anterior, y establece varios atributos de estilo. Esto conducirá a una representación más atractiva. Todavía no es necesario realizar cambios en el código, y el uso del código compatible con los mismos ejemplos que los ejemplos anteriores.
Debido a que se obtiene de WebControl, el control DataGrid hereda atributos de estilo como ancho, backcolor, borderstyle y font.name. Además, Datagrid ofrece atributos como Cellpadding, que son específicos de la tabla. Estos atributos pueden personalizar los controles en general.
La declaración también muestra varios conjuntos de estilos de proyecto, como el estilo de encabezados y el estilo alternativo. Estos estilos controlan la apariencia de sus elementos correspondientes. Tenga en cuenta que el estilo del estilo aparece en este ejemplo. Los proyectos alternativos son los mismos que las perspectivas de proyectos generales, porque sus estilos son combinaciones de alternativa de estilo y estilo itemstyle. Finalmente, este ejemplo también explica el estilo de una columna específica a través del texto en la columna de precios derecha a alineación.
DataGrid también le permite formatear el contenido de texto en su celda. Esto se completa estableciendo el valor de la propiedad DataFormatString de BoundColumn. La columna usa su formato para formatear el contenido celular de String.Format. Este atributo puede ser preestablecido o adjunto a cualquier contenido con el tipo de formato (como la fecha o la moneda). Además, debido a que el formato considera el cultivoinfo y las solicitudes de la página actual, también admite la globalización. Si no hay formato especificado, use el método ToString de este valor.
datagrid4
DataGrid4 explica cómo usar la selección en DataGrid manejando el evento seleccionadoindexchanged.
Figura 7. Ejemplos generados al permitir que los elementos que contengan datagrid
Prueba desde DataGrid4.aspx:
<%@página lenguaje = c# src = dataGrid4.cs heredes = samples.datagrid4page%>
Elástico
<ASP: DataGrid Runat = Server ID = TitlesGrid
AutogenerateColumns = falso
Ancho = 80%
backcolor = blanco
borderwidth = 1px BorderStyle = sólido CellPadding = 2 Cellspacing = 0
BorderColor = Tan
font-name = sancy style font-size = 8pt
datakeyfield = title_id
onSelectedExChanged = onSelectExChangedEdesGrid>
<Nombre de Poperty = columnas>
<ASP: ButtonColumn Text = Seleccionar comando = select/>
<ASP: BoundColumn HeadElText = Title DataField = Title/>
<ASP: BoundColumn HeadElText = Autor datafield = au_name/>
<ASP: BoundColumn Headtext = Date Publicado DataField = PubDate
dataFormatString = {0: mmm yyyy}/>
<ASP: BoundColumn HeadElText = Price DataField = Price
DataFormatString = {0: c}>
<Poperty name = itemStyle>
<ASP: TableItemStyle horizontalalign = right/>
</propiedad>
</ASP: BoundDColumn>
</propiedad>
<Poperty Name = Headstyle>
<ASP: TableItemStyle BackColor = Darkred ForeColor = White
Font-Black = True/>
</propiedad>
<Poperty name = itemStyle>
<ASP: TableItemStyle ForeColor = DarkslateBlue/>
</propiedad>
<Poperty name = alternaTingItemStyle>
<ASP: TableItemStyle BackColor = beige/>
</propiedad>
<Poperty name = selectDitemstyle>
<ASP: TableItemStyle BackColor = PalegoldenRod Font-Bold = True/>
</propiedad>
</ASP: DataGrid>
Elástico
<ASP: Label runat = servidor id = selectInfolabel font-name = sancy style font-size = 8pt/>
En el archivo .aspx, se registró un programa de procesamiento de eventos para el evento de evento seleccionado de DataGrid. Este programa de procesamiento de incidentes se implementa en un archivo compatible con el código. A ButtonColumn, que se ha agregado al conjunto de columnas como "Seleccionar", hace que DataGrid represente una columna adicional que contiene el botón Seleccionar para cada proyecto. Al mismo tiempo, se especifica SelectedItemStyle. Este estilo se utiliza para distinguir los proyectos de visualmente. Finalmente, se especifica el atributo de DatakyField de DataGrid. Este campo se colocará en la colección DataGrid Datakeys, que se utilizará en archivos con soporte de código.
DataGrid4.cs:
muestras de espacio de nombres {
Elástico
Clase pública dataGrid4page: página {
TitlesGrid de DataGrid protegido;
Etiqueta protegida SearchInfolabel;
Public iCollection getTitlesList () {
// Retore la lista de títulos del conjunto de datos de caché de alta velocidad en el estado de la aplicación.
DataSet titlesDataSet = (DataSet) Aplicación [TitlesDataSet];
if (titlesDataSet! = null) {
Return titlesDataSet.tables [título] .defaultView;
}
demás {
Regresar nulo;
}
}
Private void loadTitlesGrid () {) {)
// Búsqueda de datos de la base de datos
iCollection titlesList = getTitlesList ();
// Establecer la fuente de datos del control y restablecer su elección,
titlesgrid.dataSource = titleslist;
titlesgrid.selectdindex = -1;
// y hacer que el control use esta fuente de datos para construir su proyecto
titlesgrid.databind ();
// Actualizar información de título seleccionada
UpdateSelElectTitalInfo ();
}
Anulación protegida void overoad (EventArgs e) {{
base.onload (e);
if (! isPostback) {
// vea esta página por primera vez
loadTitlesGrid ();
}
}
// Procesamiento del evento de datagrid OnselectIndeDExChanged
Vacío protegido onselectedIndexchangedTitlesGrid (remitente de objeto,
EventArgs e) {
UpdateSelElectTitalInfo ();
}
Void privado UpdateSeSelectTitiveInfo () {{) {
// Obtener el índice seleccionado
int selindex = titlesgrid.selectdindex;
String selfieid = null;
cadena selectInfo;
if (selindex! = -1) {{
// Mostrar el campo clave del título seleccionado
Seltitleid = (string) titlesgrid.data [selindex];
SelectionInfo = id del título seleccionado: + seltitleid;
}
demás {
selectInfo = No se selecciona actualmente ningún título;
}
selectInfolabel.text = selectInfo;
}
}
}
Este archivo .cs contiene la lógica del manejo del evento seleccionadoindexChaned y la lógica de la ID del título seleccionado en DataGrid. DataGrid maneja el evento de comando, que se activa por los botones incluidos en su proyecto. Reconoce el comando estándar "SELECT", lo que hace que cambie su propiedad SelectedIndex y desencadena este incidente para cambiar el código de notificación al usuario.
En el proceso de implementación de programas de procesamiento de eventos, el código de ejemplo llama al método UpdateSelecttitleInfo. Este método es responsable de mostrar información sobre el título del libro seleccionado. En un esquema más realista, esta ID se puede usar para vincular una página para mostrar más detalles sobre el título seleccionado.
ID se recupera visitando la colección Datakeys. La colección se establece debido al atributo Datakeyfield. Por lo general, configúrelo como la palabra clave principal u otros campos que el hogar puede identificar y utilice esta información como las pautas en la consulta de la base de datos de seguimiento o los datos de filtro.
Este ejemplo muestra cómo admitir aún más las operaciones, como seleccionar objetos en la fuente de datos, además de solo objetos en la fuente de datos. DataGrid contiene soporte para varias otras características (como la clasificación, la paginación, los editores en el sitio y TemplateColumns). Sin embargo, estas características específicas exceden el alcance de la discusión de este artículo y se discutirán en futuros artículos.
Repetidor, Datalista o DataGrid?
Repetador, datalista y control de datagrida controlan modelos de programación pública compartidas. Al mismo tiempo, cada control está diseñado para centrarse en un esquema específico. Esta sección describe la función de la jerarquía de control y la función de cada control, así como un ejemplo de la solución típica que se puede usar cada control.
Como puede ver en la estructura de clase a continuación, el repetidor es un control pequeño y ligero. Solo hereda las funciones de la clase de control básico, como atributos de identificación y conjuntos de subcontrol. Por otro lado, el control de datos y el control de datagrid heredan la función WebControl, como los atributos de estilo y apariencia.
Figura 8. Lista de control de la estructura de nivel de clase
En términos de modelos de objetos, el control del repetidor es el control más simple. También es el control de enlace de datos más pequeño y básicamente diferente, es decir, no obliga a ningún diseño especial de UI. El método de indicación final sigue el método para generar texto. Este control no proporciona ningún soporte construido para estilos y atributos o comportamientos de apariencia. Es una excelente opción para una solución que debe controlarse por completo.
El control de datos es un repetidor obligado a usar el diseño de la columna o el diseño de la secuencia. Hereda los atributos de apariencia implementados en WebControl y agrega otros atributos de estilo que son adecuados para los elementos que creó. El control de datos también incluye soporte para sus operaciones estándar de proyecto (como seleccionar, editar y eliminar). Es muy adecuado para el flujo de secuencia del nivel o proyectos verticales distribuidos en una fila o fila.
El control DataGrid se ve obligado a usar la lista o el diseño de la línea. Similar a Datalist, este control proporciona estilos y atributos de apariencia. Además de seleccionar y editar, DataGrid también admite operaciones avanzadas en la colección de todo el proyecto, como páginas y clasificación. Una de las principales diferencias entre DataGrid y DataList es que DataGrid no contiene ningún atributo de plantilla, es decir, el proyecto o la no plantilla del control de DataGrid. Sin embargo, agregue TemplateColumn a la DataGrid para usar la plantilla en una columna específica.
La siguiente tabla es un resumen de la función proporcionada por el control de enlace de la lista.
Función Repetidor Datagrid Datagrid
La plantilla es (requerida) o dentro de columnas (requeridas) (opcionales)
¿Es el diseño de la lista?
Es el diseño de la corriente
¿Es el diseño del estilo de columna de distribución/periódico?
Si los atributos de estilo y apariencia son
Seleccione si sí
Editar
¿Está eliminado?
Sin paginación
¿Está ordenado?
Recursos relacionados
Con los ejemplos QuickStart publicados por Microsoft .NET Framework SDK, hubo varios ejemplos de estos controles y ejemplos que explicaron los datos de acceso a datos con XML y servicios web. El documento adjunto al SDK incluye los datos conceptuales del tema relevante, como el marco de página ASP+ y el control del servidor, y la bibliografía de referencia del modelo de objeto como parte del control de este marco.