taller de programación web

Anuncio
TALLER DE PROGRAMACIÓN
WEB
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 2
Datos Desconectados
En las sesiones de aprendizaje anteriores, tuvimos una aproximación a la gestión de datos con ASP.NET
nutilizado las características basadas en la conexión. En el enfoque de datos desconectados, los datos dejan
de tener algo que ver con el origen de datos al momento en que se recuperan. Depende del código de
seguimiento a las acciones del usuario, almacenar la información, y determinar cuándo un nuevo comando
debe ser generado y ejecutado.
ADO.NET hace hincapié en una filosofía totalmente diferente con el objeto DataSet. Cuando se conecta a
una base de datos, se llena el conjunto de datos con una copia de la información extraída de la base de datos.
Si cambia la información en el conjunto de datos, la información en la tabla correspondiente en la base de
datos no cambia. Eso significa que usted puede fácilmente procesar y manipular los datos sin preocuparse,
porque no está utilizando una conexión de base de datos. Si es necesario, puede volver a conectar a la fuente
de datos original y aplicar todos los cambios realizados en el DataSet en una sola operación de lote.
Por supuesto, esta ventaja no está exenta de inconvenientes, tales como problemas de concurrencia.
Dependiendo de la forma en que su aplicación se ha diseñado, un lote completo de cambios podrán ser
presentadas a la vez. Un simple error (como el intento de actualizar un registro que otro usuario ha
actualizado en el ínterin) puede hacer descarrilar todo el proceso de actualización. Con una estudiosa
codificación puede proteger su aplicación de estos problemas, pero requiere un esfuerzo adicional.
Por otro lado, a veces puede que desee utilizar el modelo de acceso desconectado de ADO.NET y el DataSet.
Algunos de los escenarios en los que un DataSet es más fácil de utilizar que un DataReader son los siguientes:
 Cuando usted necesita un paquete conveniente para enviar los datos a otro componente (por
ejemplo, si va a compartir información con otros componentes o distribuirlos a clientes a través de un
servicio web).
 Cuando usted necesita un cómodo formato de archivo para serializar los datos en el disco (el DataSet
incluye una funcionalidad integrada que le permite guardar en un archivo XML).
 Cuando se quiere navegar hacia atrás y hacia adelante a través de una gran cantidad de datos. Por
ejemplo, podría utilizar un DataSet para soportar una lista de control de paginado que muestra un
subconjunto de la información a la vez. El DataReader, por otra parte, puede moverse en una sola
dirección: hacia delante.
 Cuando desee navegar entre varias tablas diferentes. El DataSet puede almacenar todas estas tablas,
y la información sobre las relaciones entre ellas, lo que permite crear facilmente páginas maestrodetalle sin necesidad de consultar la base de datos más de una vez.
 Cuando se desea utilizar el enlace de datos con los controles de interfaz de usuario. Usted puede
utilizar un DataReader para enlace de datos, pero porque el DataReader es un cursor de sólo avance,
no se puede enlazar sus datos a múltiples controles. Tampoco tendrán la capacidad de aplicar criterios
personalizados de clasificación y filtrado, como si se puede hacer con el DataSet.
 Cuando se quiere manipular los datos como XML.
 Cuando se desea proporcionar actualizaciones por lotes. Por ejemplo, podría crear un servicio web
que permite a un cliente para descargar un DataTable completo de filas, realizar varios cambios y, a
continuación, volver a enviarlo más tarde. En ese momento, el servicio web puede aplicar todos los
cambios en una sola operación (suponiendo que no se producen conflictos)
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 3
El DataSet (Conjunto de Datos)
El DataSet es el corazón de acceso a datos desconectados. El DataSet contiene dos ingredientes importantes:
una colección de cero o más tablas (expuesta a través de la propiedad Tables) y una colección de cero o más
relaciones que se pueden utilizar para vincular tablas juntos (expuesta a través de la propiedad Relations). La
figura siguiente muestra la estructura básica del DataSet.
Como se puede ver en la figura, cada elemento de la colección Tables del DataSet, es un DataTable. El
DataTable contiene sus propias colecciones, la colección Columns de objetos DataColumn (que describen el
nombre y tipo de datos de cada campo) y la colección Rows de objetos DataRow (que contienen los datos
reales de cada registro).
Cada registro en un DataTable está representado por un objeto DataRow. Cada objeto DataRow representa
un único registro en una tabla que se ha recuperado de la fuente de datos. El DataRow es el contenedor de
los valores actuales del campo. Usted puede acceder a ellos por el nombre de campo. Siempre recuerde que
los datos de la fuente de datos no se tocan en absoluto cuando se trabaja con los objetos DataSet. En cambio,
todos los cambios se realizan localmente en el DataSet en la memoria. El DataSet no mantiene ningún tipo
de conexión a una fuente de datos.
El conjunto de datos también tiene métodos que pueden escribir y leer datos XML y esquemas y tiene
métodos que puede utilizar para limpiar y duplicar datos rápidamente. En la tabla que se presenta a
continuación se describen estos métodos.
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 4
DataSet XML y Diversos Métodos
Método
Descripción
GetXml() y
Devuelve una cadena con los datos (en XML markup) o esquema de
información para el DataSet. La información de esquema es la información
estructural, como el número de tablas, sus nombres, sus columnas, sus
tipos de datos, y sus relaciones.
GetXmlSchema()
WriteXml() y
WriteXmlSchema()
ReadXml() y
ReadXmlSchema()
Persiste los datos y el esquema representado por el conjunto de datos a un
archivo o una secuencia en formato XML.
Crea las tablas en un DataSet basado en un documento XML existente o
documento de esquema XML. Las fuentes en XML puede ser un archivo o
cualquier otra fuente.
Clear()
Vacía todos los datos de las tablas. Sin embargo, este método hace que el
esquema y relaciones de información queden intactas.
Copy()
Devuelve un duplicado exacto del conjunto de datos, con el mismo conjunto
de tablas, relaciones, y los datos.
Clone()
Devuelve un conjunto de datos con la misma estructura (tablas y
relaciones), pero no datos.
Merge()
Toma otro DataSet, un DataTable o una colección de objetos DataRow
como entrada y los combina en el DataSet actual, añadiendo las nuevas
tablas y la fusión de las tablas existentes.
La clase DataAdapter
Para extraer los registros de una base de datos y utilizarlos para llenarr una tabla en un DataSet, se necesita
usar otro objeto ADO.NET: un DataAdapter. El DataAdapter viene en un objeto proveedor específico, por lo
que es una clase DataAdapter separada para cada proveedor (como SqlDataAdapter, OracleDataAdapter, y
así sucesivamente).
El DataAdapter sirve como un puente entre un único DataTable en el DataSet y el origen de datos. Contiene
todos los comandos disponibles para consultar y actualizar la fuente de datos.
Para habilitar el DataAdapter para editar, borrar y añadir filas, es necesario especificar los objetos de
comando para las propiedades UpdateCommand, DeleteCommand e InsertCommand del DataAdapter. Para
utilizar el DataAdapter para llenar un DataSet, debe establecer el SelectCommand.
El DataAdapter proporciona tres métodos fundamentales, como se indican en la tabla siguiente:
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 5
Métodos DataAdapter
Método
Descripción
Fill()
Agrega un DataTable a un DataSet mediante la ejecución de la consulta en el
SelectCommand. Si la consulta devuelve varios conjuntos de resultados, este
método va a añadir varios objetos DataTable a la vez. También puede utilizar
este método para agregar datos a un DataTable existente.
FillSchema()
Agrega un DataTable a un conjunto de datos mediante la ejecución de la
consulta en el SelectCommand y recupera información de esquema
solamente. Este método no agrega ningún dato al DataTable. En su lugar,
simplemente preconfigura el DataTable con detallada información acerca de
los nombres de columna, tipos de datos, claves primarias y las restricciones
únicas.
Update()
Examina todos los cambios en un único DataTable y se aplica este lote de
cambios en el origen de datos mediante la ejecución de la apropiada
operación InsertCommand, UpdateCommand y DeleteCommand operaciones
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 6
Rich Data Controls (Controles de datos enriquecidos)
La Evolución de los Controles de Datos Enriquecidos de ASP.NET
Los controles de datos enriquecidos vienen cambiando más que cualquier otro cunjunto de controles en
ASP.NET. Con el fin de proporcionar a los desarrolladores mejores controles para sus aplicaciones orientadas
a datos con un minimo codigo, los controles de datos que fueron originalmente incluidos con ASP.NET 1.x (el
DataGrid, DataList, y Repeater) fueron remplazados con herramientas más poderosas en ASP.NET 2.0 (el
GridView, DetailsView, y FormView) y ASP.NET 3.5 (el ListView). Los ASP.NET 1.x originales aun existen,
pero la mayoria de promadores ASP.NET no los usa excepto para mantener la compatibilidad.
A continuación tenemos una vista rápida de todos los controles de datos de ASP.NET :
•
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 y se mantiene sin cambios en ASP.NET 3.5.
•
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 es nuevo 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 y se mantine sin
cambios en ASP.NET 3.5.
•
FormView: El control FormView, al igual que el DetailsView, esta diseñado para
mostrar datos desde un solo registro. También requiere plantillas. La unica ventaja
real es que proporciona la habilidad para mostrar datos de forma no tabular. Este
control fue introducido en ASP.NET 2.0 y se mantiene sin cambios en ASP.NET
3.5.
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 7
El control GridView
Es un control de cuadrícula estremadamente 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 codigo.
Definir columnas
Los ejemplos de GridView vistos hasta ahora, la propiedad GridView.AutoGenerateColumns ha sido
establecida a true. Cuando se establece esta propiedad, el GridView utiliza la reflexión para examinar el objeto
de datos y encuentra todos los campos (de un registro) o propiedades (de un objeto personalizado). A
continuación, crea una columna para cada uno, en el orden en que se encuentran.
Esta generación automática de la columna es ideal para la creación rápida de páginas de prueba, pero esto
limita la flexibilidad que como programdor desea. Por ejemplo, ¿qué pasa si desea ocultar las columnas,
cambiar su orden, o configurar algún aspecto de su pantalla, como el formato de texto de cabecera? En todos
estos casos, usted tendrá que configurar AutoGenerateColumns en falso y definir las columnas por ti mismo
en la sección de la etiqueta <Columns> del control GridView.
Cada columna puede ser de cualquiera de varios tipos diferentes, como se describe en la Tabla a continuación.
El orden de las etiquetas de columna determina el orden de derecha a izquierda de las columnas en el
GridView.
Tipos de Columna
Columna
Descripción
BoundField
Esta columna muestra texto de un campo en la fuente de datos.
ButtonField
Esta columna muestra un botón para cada item en la lista.
CheckBoxField
Esta columna muestra una casilla de verificación para cada elemento de la
lista. Se usa automáticamente para campos verdadero/falso.
CommandField
Esta columna propociona botones de selección o edición.
HyperLinkField
Esta columna muestra su contenido (un campo de la fuente de datos o de
texto estático) como un hipervínculo.
ImageField
Esta columna muestra los datos de imagen de un campo binario (siempre que
pueda interpretarse con éxito el formato de imagen compatible).
TemplateField
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.
Al declarar explícitamente un bound field, tiene la oportunidad de establecer otras propiedades. La tabla que
se muestra a continuación, lista de estas propiedades.
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 8
Propiedades de BoundField
Propiedad
Descripción
DataField
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.
DataFormatString
Esta propiedad formate los campos. Es útil para conseguir la
representación correcta de números y fechas.
ApplyFormatInEditMode
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á.
HeaderText, FooterText, y
HeaderImageUrl
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.
ReadOnly
Si es verdadero, el valor para esta columna no puede ser cambiado
en modo de edición.
InsertVisible
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.
Visible
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.
SortExpression
Esta propiedad especifica una expresión que puede ser añadida a
una consulta para realizar una ordenación basada en esta columna.
HtmlEncode
Si es verdadero (por defecto), todo el texto se codifica en HTML.
NullDisplayText
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.
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web | 9
ConvertEmptyStringToNull Si es verdadeo, antes de que una edición se complete, todas las
cadenas vacias se convertirán a valores nulos.
ControlStyle, HeaderStyle,
FooterStyle, y ItemStyle
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.
ListView incluye un conjunto amplio de plantillas que se muestran a continuación:
Plantillas ListView
Modo
Descripción
ItemTemplate
Establece el contenido de cada elemento de datos (si usted no está
utilizando el AlternatingItemTemplate) o celdaS impares de datos (si lo
está).
AlternatingItemTemplate
Utilizada en conjunto con la propiedad ItemTemplate para dar formato
a filas pares e impares de manera diferente.
ItemSeparatorTemplate
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
Establece los controles utilizados para insertar un nueve elemento.
LayoutTemplate
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.
GroupSeparatorTemplate Establece el contenido del separador que es trazado entre los grupos
de elementos.
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Unidad Didáctica: Taller de Programación Web |
10
EmptyItemTemplate
Establece el contenido que se utiliza para rellenar los valores vacíos
en el último grupo, si está utilizando la agrupación.
EmptyDataTemplate
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 usted 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 ajustar el
localizador para el GridView. La única diferencia es que no hay soporte paginación personalizada, lo que
significa que todos los datos del objeto de origen de datos siempre se recuperan.
El control FormView
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.
Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia
Ing. David Gil
Descargar