Foros del Web » Programación para mayores de 30 ;) » .NET »

Cargar en un DataGridView una columna combobox asignando un valor correspondiente.

Estas en el tema de Cargar en un DataGridView una columna combobox asignando un valor correspondiente. en el foro de .NET en Foros del Web. Buen Día a Todos !¡!¡ Mi duda es la siguiente... Tengo tres tablitas... ExamenTi Codigo Nombre ExamenMv Codigo Nombre CodigoEx Unidad Unidad Codigo Nombre En ...
  #1 (permalink)  
Antiguo 16/09/2010, 09:15
 
Fecha de Ingreso: febrero-2009
Mensajes: 101
Antigüedad: 15 años, 2 meses
Puntos: 0
Cargar en un DataGridView una columna combobox asignando un valor correspondiente.

Buen Día a Todos !¡!¡

Mi duda es la siguiente...

Tengo tres tablitas...

ExamenTi
Codigo
Nombre

ExamenMv
Codigo
Nombre
CodigoEx
Unidad

Unidad
Codigo
Nombre

En un formulario coloco los controles para consultar la tabla ExamenTi (Codigo, Nombre); dentro de un DataGridView monto todos los items que pertenecen a es examen ... Es decir cargo la tabla ExamenMv... Pero esta tabla tiene una peculiaridad... que tiene un campo llamado "Unidad" que expresa la medida en que es reportado un examen puede ser ( gr/dL , mm3 , U/L ) y como esto es igual para todos cree una tablita donde almaceno esa informacion... Y en la tabla ExamenMv heredo el codigo de las unidades...

La cosa es que logre meter dentro de una columna grid el combobox en tiempo de ejecución... por medio de este procedimiento:

Código vb:
Ver original
  1. Sub Formato_Grid()
  2.  
  3.         Dim my_strsql As String
  4.         Dim c_objds As New DataSet
  5.         Dim objds As New DataSet()
  6.         Dim CboUnidad As New DataGridViewComboBoxColumn()
  7.  
  8.         CboUnidad.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
  9.         CboUnidad.FlatStyle = FlatStyle.Flat
  10.         CboUnidad.Resizable = DataGridViewTriState.False
  11.  
  12.         ' Al iniciar el formulario abrimos la conexion y pasamos la consulta al primer combobox
  13.        'my_strsql = "select unidad.codigo,unidad.nombre from examenmv inner join unidad on examenmv.unidad=unidad.codigo where codigoEx='" & Me.TxtCodigo.Text & "'"
  14.        my_strsql = "select codigo,nombre from unidad"
  15.  
  16.         Dim objda As New MySqlDataAdapter(my_strsql, myConexion)
  17.         'Finalmente removemos la columna actual de los items de examenes y la reemplazamos por la nueva
  18.        GridMV.Columns.RemoveAt(0)
  19.         'GridMV.Columns.Insert(0, CboUnidad)
  20.  
  21.         'De la misma forma pasamos la consulta al dataset
  22.        objda.Fill(c_objds, "nombre")
  23.  
  24.         'Este es una columna de ComboBoxes
  25.        CboUnidad.Name = "Unidad"
  26.         GridMV.Columns.Add(CboUnidad)
  27.         '************************************************************'
  28.        'Ahora esta consulta la pasamos a un DataGridViewComboBoxColumn
  29.        CboUnidad.DataSource = c_objds.Tables(0).DefaultView
  30.         CboUnidad.DisplayMember = "nombre"
  31.         CboUnidad.ValueMember = "codigo"
  32.  
  33.     End Sub

y hasta aca chevere... en la columna del combobox me cargan todas las unidades ... Pero la cuestion es que me gustaria que por examen se cargue como predeterminado el valor asignado para el items del examen ...

Por ejemplo:
Codigo Nombre
ExamenTi : LAB57 Hematologia Completa

Codigo Nombre CodigoEx Unidad
ExamenMv : 01 Hematocrito LAB57 01
02 Leucocito LAB57 01
03 CHCM LAB57 02

Unidad: Codigo Nombre
01 gr/dL
02 mm3


De manera que en el DataGrid en la columna unidad me apareceza gr/dL ...
que es el nombre de la unidad de ese items.... Yo cuando lleno la columna hago un select donde me consulte solo la tabla unidad... sin enlazarla con la tabla de ExamenMv... Esto para que el usuario final tenga la posibilidad de modificarlo en el casi que sea necesario...

=D

Espero hayan entendido mi duda.... Y puedan asesorarme...
Éxitos y Saludos
__________________
Fiorellita

Etiquetas: columna, combobox, datagridview
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:22.