jueves, 2 de junio de 2011

¿Como insertar un Combo Box en un DataGridView? Parte I

Para comenzar con la serie de publicación acerca del maravilloso mundo de la programación, he decidido comenzar por uno de los temas que los he buscado en la red y nunca encontré uno que pudiera llenar mis expectativas, ya que he varias ocasiones intente colocar datos de una base de datos para poder seleccionar los opciones del listado, el datagridview, dentro de sus plantillas tiene la clase “DataGridViewComboBoxColumn”, pero tiene la deficiencia que no puede contener una lista de datos constituida por una relación clave-descripción.

Dentro de este tema desarrollaremos la incrustación de un combobox dentro de la grilla, lo cual lo iremos creando por partes, ya que si lo realizamos de una vez, se volverá un tema aburrido y no se podría explicar cada uno de los elementos que lo componen.

Primeramente tendremos que crear un nuevo proyecto de Windows, dejemos el formulario que se crea por default, para realizar nuestras pruebas luego.

Hoy insertemos una clase llamada: EditorComboBox

Esta clase será la que se active cuando se quiera editar la celda de la grid y deberá que contener el comportamiento de un ComboBox, por eso deberá de heredar las propiedades y métodos de esta clase, por medio de la sentencia:

Inherits ComboBox

Debido a que con solo tener el comportamiento de un combobox no completamos el planteamiento, es necesario realizar otro tipo de herencia por medio de las interfaces, la cual será por de medio de la edición de la grilla, lo cual se logra así:

Implements IDataGridViewEditingControl

Con esta sentencia se agregaran automáticamente varios Métodos, funciones y propiedades que forman parte de esta interface: las cuales iremos comentado poco a poco hasta completar todo este proceso.

Luego crearemos tres varias internas:

Private nNumeroFila As Integer
Private oDGV As DataGridView
Private bValorCambiado As Boolean = False

La primera de las variables nos servirá para saber en que numero de fila se esta trabajando, para poder regresar el valor al mismo cuando sea necesario, la segunda de las variables representa el datagridview en el cual se ha insertado y la ultima sirve para mostrar que la celda ha sido modificada y se inicializa con un valor falso ya que al inicio no se ha modificado el valor.

Primeramente crearemos el constructor de la clase de la siguiente manera:

Sub New()
Me.DropDownStyle = ComboBoxStyle.DropDownList
Me.DropDownWidth = 150
End Sub

Debido a que nuestra clase ha heredado las propiedades del ComboBox, se le asignaran valores a la primera para que solo acepte los valores del listado y el segundo el tamaño que tendrá el listado, si se deja muy pequeño no se podrán leer completamente, claro esta que estos los pueden modificar de acuerdo a sus necesidades.

No hay comentarios:

Publicar un comentario