Unidad 53. DataGrid (VIII)





53.11. Objetos ComboBox.

En un Datagrid podemos utilizar un objeto del tipo Combo en la columna que deseemos, eso facilita el uso de los datos de la celda, ya que de esa forma no se visualiza el código sino su significado.

Para que funcione correctamente hay que enlazar varias propiedades.

1    Cargar el Combo.

Lo normal es que poseamos una tabla en la base de datos con el significado de los códigos que se graban en una tabla y se pueda cargar el contenido de la tabla en el Combo para su utilización.

Pero también podría darse el caso de que pudiera ser una enumeración.

La carga de una tabla ya se ha visto en varios ejemplos, vamos a ver el de una enumeración por lo tanto.

 

Public Function CargaTablaCombo() As DataTable

  Dim A As Enumeracion

  Dim Tabla As New DataTable

  Dim Col(1) As String

  Dim X As Integer

  Tabla.Columns.Add("Codigo")

  Tabla.Columns.Add("Denom")

  For Each A In [Enumeracion].GetValues(GetType(Enumeracion))

X = A

Col(0) = Format(X, "0")  ' Option strict no deja hace la asignación Col(0) = A

Col(1) = A.ToString

  Next

 Return Tabla

End Function

Una vez que se ha cargado la tabla podemos ejecutar el siguiente procedimiento en nuestro programa

 

 Private Sub AnyadirCombo()

Dim ComboColum As New DataGridViewComboBoxColumn()

Tabla = CargaTablaCombo()

ComboColum.DataSource = Tabla

ComboColum.DataPropertyName = "Tipo"

ComboColum.DisplayMember = "Denom"

ComboColum.ValueMember = "Codigo"

ComboColum.HeaderText = "Tipo de servicio"

ComboColum.Name = "Tipo"

DataGrid.Columns.Insert(3, ComboColum)

 End Sub

 

Este se encarga de colocar en la posición tres de las columnas del DataGrid

 

 DataGrid.Columns.Insert(3, ComboColum)

 

El objeto que se crea en el procedimiento, hay que ver que no es un ComboBox, sino un objeto DataGridViewComboBoxColumn, pero es solo un matiz, se usan igual.

2    Funcionamiento.

Una vez que disponemos de los dos procedimientos ya se puede ejecutar desde la configuración del DataGrid, el procedimiento de adición del Combo

La explicación es la siguiente.

 

 Tabla = CargaTablaCombo()

 

Cargamos la tabla que

 

 ComboColum.DataSource = Tabla

 

Vamos a enlazar al Combo.

El enlace se produce a través de

 

 ComboColum.DataPropertyName = "Tipo"

 

Y el valor “Tipo” es la columna de la instrucción SQL que posee el código que deseamos se visualice como descripción en el DataGrid, en lugar de cómo valor numérico nada más.

 

 ComboColum.DisplayMember = "Denom"

 

Es el campo del Objeto Tabla que se visualiza en el Combo, la tabla que hemos cargado con

 

 Tabla = CargaTablaCombo()

 

Después indicamos cual es el campo de la tabla que posee el código que estamos representando en el Combo,

 

 ComboColum.ValueMember = "Codigo"

 

Después damos el valor del texto que vamos a visualizar en la columna.

 

 ComboColum.HeaderText = "Tipo de servicio"

 

Y el nombre del objeto que vamos añadir en el DataGrid

 

 ComboColum.Name = "Tipo"

 

Por último colonos queda colocarlo en el DataGrid, bien en una posición en concreto:

 

 DataGrid.Columns.Insert(3, ComboColum)

 

O bien hacer un Add

 

 DataGrid.Columns.Add(ComboColum)

 

Como posiblemente tendremos columnas con valores que no es necesario visualizar, por motivos de la instrucción SQL, podemos ocultarlas.

 

 DataGrid.Columns(5).Visible = False

 

Para un funcionamiento correcto del Combo en el DataGrid, es necesario que exista el siguiente evento, con o sin código según interese.

 

 Private Sub DataGrid_DataError(ByVal sender As Object,¨_

ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) _

Handles DataGrid.DataError

 

 End Sub

 

Sin este evento no funcionará adecuadamente.

Octubre-2010
Pág. 53.8

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies