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

Actualizar combobox dentro de un datagridview

Estas en el tema de Actualizar combobox dentro de un datagridview en el foro de .NET en Foros del Web. Hola que tal tengo la sgte duda. tengo 2 tablas, una de articulos y una de unidades la tabla de unidades que tenga por ejemplo ...
  #1 (permalink)  
Antiguo 25/11/2010, 09:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 286
Antigüedad: 16 años
Puntos: 1
Actualizar combobox dentro de un datagridview

Hola que tal tengo la sgte duda.

tengo 2 tablas, una de articulos y una de unidades

la tabla de unidades que tenga por ejemplo 10 registros.

Ahora.
tengo un datagridview que tiene 3 campos, dos de tipo textbox y el ultimo de tipo combobox

los 2 textbox tienen nombre:
id_articulo
nom_articulo

el combo tiene por nombre unidad.
unidad

la idea que cuando yo por ejemplo digite en idarticulo = 0001
en el combobox deberia cargar solamente 3 registros de la tabla unidades.
  #2 (permalink)  
Antiguo 25/11/2010, 15:04
Avatar de devilinside  
Fecha de Ingreso: marzo-2008
Ubicación: En Perú
Mensajes: 73
Antigüedad: 16 años
Puntos: 6
Respuesta: Actualizar combobox dentro de un datagridview

...espero que se entienda y te sirva:

Primero debes programar en el evento CellValueChanged, para cargar desde ahí la info del combo, cada vez que el id_Articulo cambia

Código Vb.Net:
Ver original
  1. Private Sub dgv_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvContenedor.CellValueChanged
  2.         With dgv
  3.             If .CurrentCell Is Nothing Then
  4.                 Exit Sub
  5.             End If
  6.             If .CurrentCell.OwningColumn.Name = "id_articulo" Andalso .CurrentCell.Value IsNot DbNull.Value Then
  7.                  
  8.                    'llamamos a la función que cargará las unidades y le enviamos la fila actual
  9.                    CargarUnidadesEnCombo(.CurrentRow)
  10.  
  11.             End If
  12.         End With
  13. End Sub

y esta sería la función que carga la info en el Combo.

Código Vb.Net:
Ver original
  1. Private Sub CargarUnidadesEnCombo(ByVal fila As DataGridViewRow)
  2.  
  3.         Dim idArticulo as Integer
  4.         Dim dt As New DataTable
  5.  
  6.         idArticulo=fila.Cells("id_articulo").value
  7.  
  8.         'Llamamos a una funcion que devuelve una Tabla con las unidades, dependiendo del codigo de producto
  9.         dt = ObtenerDetalle(idArticulo)
  10.  
  11.         Dim Celda As DataGridViewComboBoxCell = DirectCast(fila.Cells("Unidad").value, DataGridViewComboBoxCell)
  12.  
  13.         With Celda
  14.             .DataSource = dt
  15.             .DisplayMember = "Unidad"
  16.             .ValueMember = "Código"
  17.             If dtContacto Is Nothing OrElse dtContacto.Rows.Count <= 0 Then
  18.                 .ReadOnly = True
  19.             Else
  20.                 .ReadOnly = False
  21.             End If
  22.         End With
  23. End Sub


Saludos ;)

Última edición por devilinside; 25/11/2010 a las 15:11
  #3 (permalink)  
Antiguo 03/12/2010, 10:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 286
Antigüedad: 16 años
Puntos: 1
Respuesta: Actualizar combobox dentro de un datagridview

Hola dr. recien he tenido un tiempo para poder revisar el codigo, pero me da un error no se si sabras porque es.

Referencia a objeto no establecida como instancia de un objeto.

el codigo que me pasaste lo deje asi ya con los nombres de mis columnas

Cita:
Private Sub m_dgv_detalle_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles m_dgv_detalle.CellValueChanged
With m_dgv_detalle
If .CurrentCell Is Nothing Then
Exit Sub
End If
If .CurrentCell.OwningColumn.Name = "txt_intero" AndAlso .CurrentCell.Value IsNot DBNull.Value Then
'llamamos a la función que cargará las unidades y le enviamos la fila actual
CargarUnidadesEnCombo(.CurrentRow)
End If
End With
End Sub
Cita:
Private Sub CargarUnidadesEnCombo(ByVal fila As DataGridViewRow)
Dim idArticulo As String
Dim dt As New DataTable
idArticulo = fila.Cells("txt_intero").Value
'Llamamos a una funcion que devuelve una Tabla con las unidades, dependiendo del codigo de producto
Dim Celda As DataGridViewComboBoxCell = DirectCast(fila.Cells("txt_unidad").Value, DataGridViewComboBoxCell)
Dim parr(2) As System.Object
parr(0) = "aqa"
parr(1) = "B"
parr(2) = idArticulo
Dim ds As DataSet = ServicioWeb.EjecutarWS("sp_inv_articulo_unidad_sel ectcombo", parr)
If Not ds Is Nothing Then
dt = ds.Tables(0)
With Celda
.DataSource = dt
.ValueMember = "cod_unidad"
.DisplayMember = "des_unidad"
End With
End If
End Sub
no se si podrias ayudarme el porque me sale ese error.

Saludos
  #4 (permalink)  
Antiguo 06/12/2010, 08:26
Avatar de devilinside  
Fecha de Ingreso: marzo-2008
Ubicación: En Perú
Mensajes: 73
Antigüedad: 16 años
Puntos: 6
Respuesta: Actualizar combobox dentro de un datagridview

En que momento te arroja el error y en que línea?
  #5 (permalink)  
Antiguo 07/04/2015, 11:40
 
Fecha de Ingreso: abril-2015
Mensajes: 1
Antigüedad: 9 años
Puntos: 0
Respuesta: Actualizar combobox dentro de un datagridview

Hola Amigo, yo ago lo que necesitas pero de una forma diferente:
GetAllElements("Select Almacen From AlmacenesUbicaciones Group by Almacen", DataGridView2)
Dim apt As String
For Each Row As DataGridViewRow In Me.DataGridView2.Rows
apt = Row.Cells(0).Value
Almacen.Items.Add(apt)
Next
primero cargo los registros de mi tabla en un datagridview, luego con For Each recorro cada fila y la boy agregando al combo box del datagridview, y para realizar una accion al cambiar el valo del combo ago lo siguiente:
Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If DataGridView1.Columns(e.ColumnIndex).Name = "Almacen" Then
'eliminar row
GetAllElements("Select Ubicacion From AlmacenesUbicaciones Where Almacen = '" & DataGridView1.Item(5, DataGridView1.CurrentRow.Index).Value & "'", DataGridView2)
Dim apt As String
Ubicacion.Items.Clear()
For Each Row As DataGridViewRow In Me.DataGridView2.Rows
apt = Row.Cells(0).Value
Ubicacion.Items.Add(apt)
Next
End If
End Sub

Saludos

Etiquetas: 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 20:05.