Lección 10: Gestionando bases de datos SQL Server con ASP.NET CONTROLES DE DATOS ENRIQUECIDOS Introducción Las aplicaciones Web obtienen acceso normalmente a los orígenes de datos para el almacenamiento y la recuperación de datos dinámicos. Se puede escribir código para el acceso a los datos utilizando clases del espacio de nombres System.Data (normalmente denominado ADO.NET) y del espacio de nombres System.Xml. Este enfoque era normal en versiones anteriores de ASP.NET. Sin embargo, ASP.NET también permite realizar el enlace de datos mediante declaración. Este proceso no requiere la existencia de código para los escenarios de datos más comunes, entre los que se incluyen: Seleccionar y mostrar datos. Ordenar, paginar y almacenar datos en memoria caché. Actualizar, insertar y eliminar datos. Filtrar datos utilizando parámetros en tiempo de ejecución. Crear escenarios de detalles maestros utilizando parámetros. ASP.NET incluye dos tipos de controles de servidor que participan en el modelo de enlace de datos declarativo: controles de origen de datos y controles enlazados a datos. Estos controles administran las tareas subyacentes requeridas por el modelo Web sin estado para mostrar y actualizar datos en páginas Web ASP.NET. Por tanto, no es estrictamente necesario conocer los detalles del ciclo de vida de la solicitud de página si sólo se va a realizar el enlace de datos. Controles de origen de datos… Los controles de origen de datos son controles ASP.NET que administran las tareas de conexión a un origen de datos y de lectura y escritura de datos. Los controles de origen de datos no representan ninguna interfaz de usuario, sino que actúan como intermediarios entre un almacén de datos en particular (como una base de datos, un objeto comercial o un archivo XML) y los demás controles de la página Web ASP.NET. Los controles de origen de datos habilitan un amplio conjunto de funciones para recuperar y modificar datos, entre las que se incluyen la consulta, la ordenación, la paginación, el filtrado, la actualización, la eliminación y la inserción. …Controles de origen de datos Control de origen de datos Descripción AccessDataSource Permite trabajar con una base de datos de Microsoft Access. LinqDataSource Permite usar Language-Integrated Query (LINQ) en una página web ASP.NET a través de marcado declarativo para recuperar y modificar datos de un objeto de datos. Admite la generación automática de comandos de selección, actualización, inserción y eliminación. El control también admite ordenación, filtrado y paginación. ObjectDataSource Permite trabajar con un objeto comercial u otra clase y crear aplicaciones Web basadas en objetos de nivel medio para administrar los datos. SiteMapDataSource Se utiliza con la navegación en el sitio ASP.NET. SqlDataSource Permite trabajar con proveedores de datos administrados de ADO.NET, que proporcionan acceso a bases de datos de Microsoft SQL Server, OLE DB, ODBC u Oracle. XmlDataSource Permite trabajar con un archivo XML, que es especialmente útil para controles de servidor ASP.NET jerárquicos tales como el control TreeView o Menu. Controles enlazados a datos… Los controles enlazados a datos representan datos como marcado al explorador que realizó la solicitud. Un control enlazado a datos se puede enlazar a un control de origen de datos y buscar datos automáticamente en el momento apropiado del ciclo de vida de la solicitud de página. Los controles enlazados a datos pueden aprovechar las ventajas de las funciones proporcionadas por un control de origen de datos entre las que se incluyen la ordenación, la paginación, el almacenamiento en caché, el filtrado, la actualización, la eliminación y la inserción. Un control enlazado a datos establece una conexión con un control de origen de datos a través de su propiedad DataSourceID. …Controles enlazados a datos DataGrid: DataGrid fue introducido en ASP.NET 1.0 pero fue completamente remplazado por GridView en ASP.NET 2.0. GridView propociona el mismo conjunto de características (y más) y simplifica el modo de codificar. Por defecto, DataGrid no aparece en el Toolbox de Visual Studio. DataList: DataList fue introducido en ASP.NET 1.0 y también fue remplazado por GridView, el proporciona un conjunto de plantillas similares y modelo de codigo mucho más simple. El control DataList tiene una característica que no es proporcionada por el control GridView: la habilidad para crear una tabla multicolumna donde cada celda es un registro separado. El control GridView no soporta este inusual diseño, ya que forza a cada registro a ocupar una fila separada. De cualquier manera, se puede obtener este resultado con el nuevo control ListView. Repeater: El control Repeater fue introducido en ASP.NET 1.0. El control Repeater fue remplazado por el control ListView, el cual ofrece la misma flexibilidad pero además incluye características como selección, ordenamiento y edicción. GridView: El control GridView es el control todo en uno en ASP.NET. Este control muestra registros en la fila de una tabla, esto usando multiples columnas, plantillas, o alguna combinación de las dos. El control GridView fue introducido en ASP.NET 2.0. ListView: Es un control flexible basado en plantilla que no ofrece todas las características de el control GridView pero proporciona flexibilidad para renderiar los datos con una etiqueta <table>. El control ListView fue introducido en ASP.NET 3.5. DetailsView: El control DetailsView es el más poderoso control ASP.NET para mostrar los datos desde un solo registro a la vez. Este control usa un diseño tabular y soporta plantillas. Fue introducido en ASP.NET 2.0. FormView: El control FormView, al igual que el DetailsView, esta diseñado para mostrar datos desde un solo registro. También requiere plantillas. La única ventaja real es que proporciona la habilidad para mostrar datos de forma no tabular. Este control fue introducido en ASP.NET 2.0. El control GridView Es un control de cuadrícula extremadamente flexible para mostrar datos en una cuadrícula básica consistente de filas y columnas. Este control incluye un amplio rango de características, incluyendo selección, paginación, ordenamiento y edición. Además estas características son extensibles a través de plantillas. La gran ventaja de los controles GridView sobre los DataGrid es que soportan diferentes escenarios de codigo. Usando GridView, puedes realizar muchas tareas comunes, como paginación y selección, sin escribir código. Tipos de columna del control GridView Columna BoundField ButtonField CheckBoxField CommandField HyperLinkField ImageField TemplateField Descripción Esta columna muestra texto de un campo en la fuente de datos. Esta columna muestra un botón para cada item en la lista. Esta columna muestra una casilla de verificación para cada elemento de la lista. Se usa automáticamente para campos verdadero/falso. Esta columna propociona botones de selección o edición. Esta columna muestra su contenido (un campo de la fuente de datos o de texto estático) como un hipervínculo. Esta columna muestra los datos de imagen de un campo binario (siempre que pueda interpretarse con éxito el formato de imagen compatible). Esta columna le permite especificar varios campos, controles personalizados, y HTML arbitrario usando una plantilla personalizada. Le da el más alto grado de control, pero requiere más trabajo. Propiedades de BoundField Propiedad DataField DataFormatString ApplyFormatInEditMode HeaderText, FooterText, y HeaderImageUrl ReadOnly InsertVisible Visible SortExpression HtmlEncode NullDisplayText ConvertEmptyStringToNull ControlStyle, HeaderStyle, FooterStyle, y ItemStyle Descripción Esta propiedad indica el nombre del campo (de una fila) o propiedad (de un objeto) del elemento de datos que desea mostrar en esta columna. Esta propiedad formate los campos. Es útil para conseguir la representación correcta de números y fechas. Si es verdero, la cadena de formato se utlizará para dar formato al valor aún cuando aparezca en un cuadro de texto en modo de edición. El valor predeterminado es falso, lo que significa que sólo el formato subyacente normal se utilizará. Las dos primera propiedades establecen el texto en la región de encabezado y pie de página de la cuadrícula, si esta cuadrícula tiene una cabecera (GridView.ShowHeader es verdadero) y pie de página (GridView.ShowFooter es verdadero). La cabecera es más comúnmente utilizada para un título descriptivo, como el campo nombre, mientras que el pie de página puede contener un valor calculado dinámicamente, como un resumen. Para mostrar una imagen en el encabezado en lugar de texto, establezca la Propiedad HeaderImageUrl. Si es verdadero, el valor para esta columna no puede ser cambiado en modo de edición. Si es falso, el valor de estta columna no puede establecers en modo de inserción. Si quiere un valor de columna para establecer mediante programación o sobre la base de un valor por defecto definido en la base de datos, puede utilizar esta característica. Si es falsa, la columna no será visible en la página. Esta propiedad le da una manera conveniente de programación para ocultar o mostrar columnas específicas, al cambiar la visión de conjunto de los datos. Esta propiedad especifica una expresión que puede ser añadida a una consulta para realizar una ordenación basada en esta columna. Si es verdadero (por defecto), todo el texto se codifica en HTML. Esta propiedad define el texto que se mostrará pora un valor nulo. El valor predeterminado es una cadena vacía, aunque podría cambiar a un valor no modificable. Si es verdadeo, antes de que una edición se complete, todas las cadenas vacias se convertirán a valores nulos. Estas propiedades configuran la apariencia sólo de esta columna, anulando los estilos de la fila. El control ListView El control ListView es el único nuevo control de datos en ASP.NET 3.5. Está diseñado para reemplazar al control Repeater. Esencialmente, el ListView es un control enlazado a datos muy flexible que despliega su contenido sobre la base de las plantillas que usted define. A diferencia del Repeater, el ListView añade características de nivel superior tales como la selección y edición, que trabajan de la misma forma que los del GridView. Pero a diferencia del GridView, el control ListView no admite un modelo basado en campos para la creación rápida y fácil de cuadriculas con un mínimo de lenguaje de marcado. Plantillas del control ListView Modo ItemTemplate ItemSeparatorTemplate Descripción Establece el contenido de cada elemento de datos (si usted no está utilizando el AlternatingItemTemplate) o celdaS impares de datos (si lo está). Utilizada en conjunto con la propiedad ItemTemplate para dar formato a filas pares e impares de manera diferente. Establece el contenido del separador que es trazada entre los items. SelectedItemTemplate Establece el contenido del elemento que está seleccionado actualmente. EditItemTemplate Establece los controles utilizados para un elemento en modo de edición. InsertItemTemplate LayoutTemplate Establece los controles utilizados para insertar un nueve elemento. Establece el lenguaje de marcado que envuelve a la lista de elementos. GroupTemplate Establece el lenguaje de marcado que envuelve a cada grupo de artículos, si estás utilizando la función de agrupación. Establece el contenido del separador que es trazado entre los grupos de elementos. AlternatingItemTemplate GroupSeparatorTemplate EmptyItemTemplate EmptyDataTemplate Establece el contenido que se utiliza para rellenar los valores vacíos en el último grupo, si está utilizando la agrupación. Establece el lenguaje de marcado usado si el objeto de enlace de datos esta vacio. El control DetailsView El DetailsView está diseñado para mostrar un único registro a la vez. Se coloca cada pieza de información (ya sea un campo o una propiedad) en una fila distinta de una tabla. El control DetailsView también puede enlazarce a una colección de elementos. En este caso, muestra el primer elemento en el grupo. También le permite pasar de un registro a otro usando los controles de paginación, si se ha establecido la propiedad AllowPaging en verdadero. Puede configurar los controles de paginación utilizando las propiedades PagingStyle y PagingSettings de la misma forma que ajusta el localizador para el GridView. La única diferencia es que no hay soporte para paginación personalizada, lo que significa que todos los datos del objeto de origen de datos siempre se recuperan. El control DetailsView Si necesita la máxima flexibilidad de las plantillas, FormView proporciona un modelo de control único para la visualización y edición de un único registro. El modelo de plantilla de FormView es que coincide mucho con el modelo de la TemplateField en GridView. Por lo tanto, usted tiene las siguientes plantillas para trabajar: ItemTemplate EditItemTemplate InsertItemTemplate FooterTemplate HeaderTemplate EmptyDataTemplate PagerTemplate Esto significa que puede tomar el modelo exacto del contenido que se pone en un TemplateField en un GridView y colocarlo dentro del FormView. Práctica Dirigida Utilizando controles de datos enriquecidos.