Configurar por código las propiedades del DataGrid

Configurar por código las propiedades del DataGrid

Supongamos ahora, que necesitamos por código modificar las propiedades no sólo del DataGrid en general, sino de algunas columnas del mismo. Esto es perfectamente factible mediante los objetos manipuladores de estilo, tanto del propio DataGrid, como de cada una de las columnas que lo componen.

La clase DataGridTableStyle, nos permitirá crear objetos que contengan una configuración de tabla personalizada, que después añadiremos al DataGrid.

Por otra parte, mediante la clase DataGridTextBoxColumn, crearemos objetos con la configuración particular para cada columna. La propiedad clave de estos objetos es MappingName, que contiene una cadena con el nombre de la columna de la tabla del DataSet, que será la que muestre dicha columna.

El formulario frmGridPropCod que abriremos con la opción de menú DataGrid + Prop.código, hace uso en el evento de carga de la ventana, de estos objetos para variar el aspecto por defecto que tiene su DataGrid. El Código fuente 584 muestra las instrucciones empleadas.

Private Sub frmGridPropCod_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

© Grupo EIDOS 38. El control DataGrid, relaciones y vistas

' crear conexión Dim oConexion As New SqlConnection() oConexion.ConnectionString = "Server=(local);" & _

"Database=Musica;uid=sa;pwd=;"

' crear adaptador oDataAdapter = New SqlDataAdapter("SELECT * FROM Grabaciones", oConexion)

' crear commandbuilder Dim oCB As SqlCommandBuilder = New SqlCommandBuilder(oDataAdapter)

' crear dataset oDataSet = New DataSet() oDataAdapter.Fill(oDataSet, "Grabaciones")

' asignar dataset al datagrid Me.grdDatos.DataSource = oDataSet Me.grdDatos.DataMember = "Grabaciones"

' configurar grid por código Me.grdDatos.Anchor = AnchorStyles.Bottom + AnchorStyles.Left +

AnchorStyles.Right + AnchorStyles.Top Me.grdDatos.CaptionText = "El listado de las grabaciones" Me.grdDatos.CaptionBackColor = Color.Turquoise Me.grdDatos.CaptionForeColor = Color.Black

' crear un objeto para estilos del datagrid Dim oEstiloGrid As New DataGridTableStyle() oEstiloGrid.MappingName = "Grabaciones" oEstiloGrid.BackColor = Color.LightGoldenrodYellow oEstiloGrid.AlternatingBackColor = Color.Aquamarine

' crear objetos de columna-grid para cada ' columna de la tabla a mostrar en el datagrid Dim oColGrid As DataGridTextBoxColumn

' configurar cada objeto de columna-grid oColGrid = New DataGridTextBoxColumn() oColGrid.TextBox.Enabled = False oColGrid.Alignment = HorizontalAlignment.Center oColGrid.HeaderText = "Descripción grabac." ' nombre de la columna del dataset que ' se mapea hacia esta columna del grid oColGrid.MappingName = "Titulo" oColGrid.Width = 300 ' añadir la columna al objeto que contiene ' los estilos del datagrid, en concreto, ' a la colección de estilos de columna oEstiloGrid.GridColumnStyles.Add(oColGrid) oColGrid = Nothing

oColGrid = New DataGridTextBoxColumn() oColGrid.TextBox.Enabled = False oColGrid.Alignment = HorizontalAlignment.Left oColGrid.HeaderText = "Fecha COMPRA" oColGrid.MappingName = "FCompra" oColGrid.Width = 110 oColGrid.Format = "ddd, d-MMM-yyy" oEstiloGrid.GridColumnStyles.Add(oColGrid) oColGrid = Nothing

oColGrid = New DataGridTextBoxColumn() oColGrid.TextBox.Enabled = False oColGrid.Alignment = HorizontalAlignment.Right oColGrid.HeaderText = "Valor pagado" oColGrid.MappingName = "Precio"

Programación con Visual Basic .NET © Grupo EIDOS

oColGrid.Width = 85 oColGrid.Format = "#,#" oEstiloGrid.GridColumnStyles.Add(oColGrid) oColGrid = Nothing

' una vez creadas todas las columnas de ' estilos para el grid, añadir el objeto ' que contiene el estilo personalizado ' a la colección de estilos de tablas ' del datagrid Me.grdDatos.TableStyles.Add(oEstiloGrid)

End Sub

Código fuente 584

La Figura 361 muestra el resultado de esta modificación sobre el DataGrid.

Figura 361. DataGrid modificado totalmente por código.