2 - Controles de acceso a datos

Anuncio
Unidad I – Aplicación de controles
1.2 CONTROLES DE ACCESO A DATOS
a) DataGridView (Clase)
El control DataGridView proporciona una tabla personalizable para mostrar datos. La clase DataGridView
permite personalizar celdas, filas, columnas y bordes mediante propiedades como DefaultCellStyle,
ColumnHeadersDefaultCellStyle, CellBorderStyle y GridColor.
Puede utilizar un control DataGridView para mostrar datos con o sin un origen de datos subyacente. Sin
especificar un origen de datos, puede crear las columnas y filas que contendrán los datos y agregarlas
directamente a DataGridView. Como alternativa, puede establecer las propiedades DataSource y DataMember
para enlazar el control DataGridView a un origen de datos y llenarlo de datos automáticamente.
Al trabajar con grandes cantidades de datos, puede establecer la propiedad VirtualMode en true para mostrar
un subconjunto de los datos disponibles. El modo virtual requiere la implementación de una caché de datos a
partir de la cual se llenará el control DataGridView.
Aunque el control DataGridView reemplaza y agrega funcionalidad al control DataGrid de las versiones
anteriores, se conserva el control DataGrid por compatibilidad con las versiones anteriores y para uso futuro, si
así se elige.
Nota:
El control DataGridView hereda las propiedades ContextMenu y ContextMenuStrip de Control, pero sólo
admite la propiedad ContextMenuStrip. El uso de la propiedad ContextMenu con el control DataGridView
no tiene ningún efecto.
b) DataGrid (Clase)
Muestra datos de ADO.NET en una cuadrícula desplazable. El control DataGridView reemplaza y agrega
funcionalidad al control DataGrid; sin embargo, el control DataGrid se conserva para compatibilidad con
versiones anteriores y para uso futuro, si así se elige.
System.Windows.Forms.DataGrid muestra vínculos de tipo Web a las tablas secundarias. Para desplazarse a
la tabla secundaria, haga clic en un vínculo. Cuando se muestra una tabla secundaria, aparece en el título un
botón de retroceso en el que se puede hacer clic para volver a la tabla primaria. Los datos de las filas primarias
se muestran debajo del título y encima de los encabezados de columna. Para ocultar la información de las filas
primarias, haga clic en el botón situado a la derecha del botón de retroceso.
Para mostrar una tabla en System.Windows.Forms.DataGrid en tiempo de ejecución, utilice el método
SetDataBinding para establecer las propiedades DataSource y DataMember en un origen de datos válido. Son
válidos los siguientes orígenes de datos:
•
•
•
•
•
•
•
DataTable.
DataView.
DataSet.
DataViewManager.
Matriz unidimensional
Cualquier componente que implemente la interfaz IListSource
Cualquier componente que implemente la interfaz IList
Se puede crear una cuadrícula que permita a los usuarios editar los datos pero que les impida agregar nuevas
filas; para ello, se debe utilizar DataView como origen de datos y establecer el valor de la propiedad AllowNew
en false.
Lic.Cesar Espinoza Jiménez
1
Unidad I – Aplicación de controles
Los objetos BindingManagerBase administran asimismo los orígenes de datos. Para cada tabla de un origen de
datos, se puede devolver un objeto BindingManagerBase desde BindingContext del formulario. Por ejemplo,
se puede determinar el número de filas de un origen de datos devolviendo la propiedad Count del objeto
BindingManagerBase asociado.
Para validar los datos, utilice los objetos subyacentes que representan los datos y sus eventos. Por ejemplo, si
los datos proceden de un objeto DataTable de DataSet, utilice los eventos ColumnChanging y RowChanging.
Nota:
Dado que es posible personalizar el número de columnas (agregando o eliminando miembros de
GridColumnStylesCollection) y que las filas pueden ordenarse por columna, no es posible garantizar que los
valores de las propiedades RowNumber y ColumnNumber se correspondan con los índices de DataRow y
DataColumn en DataTable. Por este motivo, se ha de evitar el uso de dichas propiedades en el evento
Validating para validar los datos.
Para determinar la celda seleccionada, utilice la propiedad CurrentCell. Para cambiar el valor de cualquier
celda, utilice la propiedad Item, que puede adoptar los índices de fila y columna de la celda o un solo objeto
DataGridCell. Supervise el evento CurrentCellChanged para detectar cuándo el usuario selecciona otra celda.
Para determinar en qué parte del control ha hecho clic el usuario, utilice el método HitTest en el evento
MouseDown. El método HitTest devuelve un objeto DataGrid.HitTestInfo, que contiene la fila y la columna de
un área en la que se ha hecho clic.
Para administrar la apariencia del control en tiempo de ejecución, existen varias propiedades que permiten
establecer los atributos de color y título, incluidas las propiedades CaptionForeColor, CaptionBackColor,
CaptionFont, etc.
La apariencia de la cuadrícula o cuadrículas mostradas puede modificarse también creando objetos
DataGridTableStyle y agregándolos a la colección GridTableStylesCollection, a la que se puede obtener acceso
mediante la propiedad TableStyles. Por ejemplo, si la propiedad DataSource está establecida en una clase
DataSet que contiene tres objetos DataTable, se pueden agregar tres objetos DataGridTableStyle a la
colección, uno por cada tabla. Para sincronizar cada objeto DataGridTableStyle con un objeto DataTable,
establezca la propiedad MappingName de DataGridTableStyle en TableName de DataTable.
Para crear una vista personalizada de una tabla, hay que crear una instancia de una clase
DataGridTextBoxColumn o DataGridBoolColumn y agregar el objeto a la colección GridTableStylesCollection,
a la que se obtiene acceso a través de la propiedad TableStyles. Ambas clases se heredan de
DataGridColumnStyle. Para cada estilo de columna, hay que establecer la propiedad MappingName en
ColumnName de una columna que se desee mostrar en la cuadrícula. Para ocultar una columna, establezca su
propiedad MappingName en un valor que no sea una propiedad ColumnName válida.
Para aplicar formato al texto de una columna, hay que establecer la propiedad Format de
DataGridTextBoxColumn en uno de los valores de Cadenas de formato de fecha y hora o Cadenas con
formato numérico estándar.
Para enlazar DataGrid a una matriz de objetos con establecimiento inflexible de tipos, el tipo de objeto debe
contener propiedades públicas. Para crear un control DataGridTableStyle que muestre la matriz, establezca la
propiedad DataGridTableStyle.MappingName en typename[] donde el nombre del tipo de objeto reemplaza a
typename. Observe también que la propiedad MappingName distingue entre mayúsculas y minúsculas; el
nombre de tipo debe coincidir exactamente.
Lic.Cesar Espinoza Jiménez
2
Unidad I – Aplicación de controles
También es posible enlazar DataGrid a ArrayList. Una característica de ArrayList es que puede contener
objetos de varios tipos, pero DataGrid sólo puede enlazarse a dicha lista si todos los elementos de la lista son
del mismo tipo que el primero. Esto significa que todos los objetos deben ser del mismo tipo o que deben
heredarse de la misma clase que el primer elemento de la lista. Por ejemplo, si el primer elemento de una lista
es Control, el segundo elemento podría ser TextBox (que se hereda de Control). En cambio, si el primer
elemento es TextBox, el segundo objeto no puede ser Control. Además, ArrayList debe contener elementos
en el momento de enlazarse. Una lista ArrayList vacía dará como resultado una cuadrícula vacía. Además, los
objetos en el control ArrayList deben contener propiedades públicas. Para enlazarse a ArrayList, hay que
establecer la propiedad MappingName de DataGridTableStyle en "ArrayList" (el nombre de tipo).
Para cada DataGridTableStyle, se pueden establecer los atributos de color y título que reemplazan los valores
del control System.Windows.Forms.DataGrid. Sin embargo, si no se establecen dichas propiedades, se
utilizan los valores del control de manera predeterminada. Las propiedades DataGridTableStyle pueden
reemplazar las siguientes propiedades:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
AllowSorting
AlternatingBackColor
BackColor
ColumnHeadersVisible
ForeColor
GridLineColor
GridLineStyle
HeaderBackColor
HeaderFont
HeaderForeColor
LinkColor
PreferredColumnWidth
PreferredRowHeight
ReadOnly
RowHeadersVisible
RowHeaderWidth
SelectionBackColor
SelectionForeColor
Para personalizar la apariencia de columnas individuales, agregue objetos DataGridColumnStyle a la
colección GridColumnStylesCollection, a la que se obtiene acceso mediante la propiedad GridColumnStyles
de cada DataGridTableStyle. Para sincronizar cada objeto DataGridColumnStyle con un objeto DataColumn
en DataTable, establezca la propiedad MappingName en la propiedad ColumnName de un objeto
DataColumn. Al construir un objeto DataGridColumnStyle, también se puede establecer una cadena de
formato que especifica el modo en que se muestran los datos en la columna. Por ejemplo, se puede especificar
que la columna utilice un formato de fecha corta para mostrar las fechas que contiene la tabla.
Nota:
El control DataGridView reemplaza y agrega funcionalidad al control DataGrid; sin embargo, el control
DataGrid se conserva para mantener la compatibilidad con versiones anteriores y para uso futuro, si así se
elige.
Lic.Cesar Espinoza Jiménez
3
Descargar