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

filtrar combox dentro de datagridview vb net

Estas en el tema de filtrar combox dentro de datagridview vb net en el foro de .NET en Foros del Web. quiero filtrar dos combox dentro de un datagrid pero lo queme pasaes ala hora defiltrar los datos del combo anterior se cambia la data de ...
  #1 (permalink)  
Antiguo 31/07/2012, 12:15
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
filtrar combox dentro de datagridview vb net

quiero filtrar dos combox dentro de un datagrid pero lo queme pasaes ala hora defiltrar los datos del combo anterior se cambia la data de lo primero que seleccione
como hacer para que los registros que seleccionen y no cambien

ayuda porfavor



Private Sub dgvsalud_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvsalud.CellValueChanged
If Not (dgvsalud.CurrentRow Is Nothing) Then
Dim columna As String = dgvsalud.Columns(dgvsalud.CurrentCell.ColumnIndex) .Name
If columna = "dsc_tipo_seguro" Then
' MsgBox(dgvsalud.CurrentRow.Cells("dsc_tipo_seguro" ).Value)
dsc_eps.DataSource = lobjTipoSeguro.fcboseguros(dgvsalud.CurrentRow.Cel ls("dsc_tipo_seguro").Value)
dsc_eps.ValueMember = "cod_tipo_seguro"
dsc_eps.DisplayMember = "dsc_tipo_seguro"
dgvsalud.AutoGenerateColumns = False
End If
End If
End Sub
  #2 (permalink)  
Antiguo 31/07/2012, 13:28
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

Seria mejor que uses el evento EditingControlShowing, guiate de aqui

http://stackoverflow.com/questions/6...showing-events
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 31/07/2012, 14:57
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Desacuerdo Respuesta: filtrar combox dentro de datagridview vb net

amigo lo que deseo es que se pudiera filtrar de forma horizontal dentro de la grilla por ejmeplo

tengo 2 combobox
asi
de lo cual deberia filtrar al siguiente combo dentro del datagrid


combo1 combo2
hola 1
que tal 2
3
4
de esa manera me deveria filtrar y todo dentro de un datagridview en vb net porfavor un ejemplo
  #4 (permalink)  
Antiguo 31/07/2012, 15:00
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

ahi ta el ejemplo leochavez con eso consigues lo que quieres revisalo bien
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 31/07/2012, 15:16
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

como lo paso pero a vb net envame ps un ejemplo
  #6 (permalink)  
Antiguo 31/07/2012, 15:36
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

Bueno no se porque aun les cuesta poder interpretar el código si la lógica es la misma ademas tanto VB y C# solo se diferencias por cosas pequeñas, ademas lo veo mal que uno que te esta ayudando trates de decirle esto

Cita:
Iniciado por leochavez Ver Mensaje
como lo paso pero a vb net envame ps un ejemplo
trata de ser un poco mas amable de la gente que te esta ayudando, bueno acá te pongo como deberías hacerlo, esta en VB tal como tu lo quieres.

Código vb:
Ver original
  1. Private sub dgDatos_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) Handles dgDatos.EditingControlShowing
  2.      
  3.      If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then ' Validando si el control es de tipo combobox edit
  4.        
  5.         If e.ColumnIndex = 0 ' Valida si el index es igual al combo primario en donde vas a realizar el filtro
  6.         Dim CellTextBox As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl)
  7.         RemoveHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
  8.         AddHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
  9.      
  10.      End If
  11.      
  12. End Sub
  13.  
  14. Sub CellTextBox_SelectionChangeCommited(ByVal sender As Object, ByVal e As EventArgs)
  15.    
  16.     Dim c As ComboBox = TryCast(sender, ComboBox)
  17.     Dim value as Object = c.SelectedValue
  18.     Dim Combo as DataGridViewComboBox = dgDatos.Columns(dgDatos.CurrentCell.ColumnIndex)
  19.    
  20.     Combo.DataSource = lobjTipoSeguro.fcboseguros(value)
  21.     Combo.ValueMember = "cod_tipo_seguro"
  22.     Combo.DisplayMember = "dsc_tipo_seguro"
  23.    
  24. End Sub
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #7 (permalink)  
Antiguo 31/07/2012, 15:46
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

amigo me sale erro en el columnindex
y el
DataGridViewComboBox

Private Sub dgvsalud_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles dgvsalud.EditingControlShowing
If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then ' Validando si el control es de tipo combobox edit

If e.ColumnIndex = 0 Then ' Valida si el index es igual al combo primario en donde vas a realizar el filtro
Dim CellTextBox As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl)
RemoveHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
AddHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited

End If
End If
End Sub
Sub CellTextBox_SelectionChangeCommited(ByVal sender As Object, ByVal e As EventArgs)

Dim c As ComboBox = TryCast(sender, ComboBox)
Dim value As Object = c.SelectedValue
Dim Combo As DataGridViewComboBox = dgvsalud.Columns(dgvsalud.CurrentCell.ColumnIndex)

Combo.DataSource = lobjTipoSeguro.fcboseguros(value)
Combo.ValueMember = "cod_tipo_seguro"
Combo.DisplayMember = "dsc_tipo_seguro"

End Sub
  #8 (permalink)  
Antiguo 31/07/2012, 15:55
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

Perdón yo me equivoque corrige esas lineas por estas

la de e.ColumnIndex por esta dgvsalud.CurrentCell.ColumnIndex

la de DataGridViewComboBox por ComboBox
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #9 (permalink)  
Antiguo 31/07/2012, 15:59
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

asi
pero me sale error en esta parte
no se puede convertir dice

Dim Combo As combobox= dgvsalud.Columns(dgvsalud.CurrentCell.ColumnIndex)
  #10 (permalink)  
Antiguo 31/07/2012, 16:14
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

Perdón creo que es así
en vez de esto
Código vb:
Ver original
  1. Dim Combo As DataGridViewComboBox = dgvsalud.Columns(dgvsalud.CurrentCell.ColumnIndex)
pon esto
Código vb:
Ver original
  1. Dim Combo As DataGridViewComboBoxColumn = TryCast(dgvsalud.Columns(dgvsalud.CurrentCell.ColumnIndex),DataGridViewComboBoxColumn)
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #11 (permalink)  
Antiguo 31/07/2012, 16:20
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

amigo aparecen los datos pero se limpian cuando lo selecciono porque eso
  #12 (permalink)  
Antiguo 31/07/2012, 16:28
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

Porque lo que este código hace es por ejemplo que si yo tengo una tabla DEPARTAMENTO y una tabla PROVINCIA si yo escogo un DEPARTAMENTO me mostrara en el otro combo las PROVINCIAS de ese departamento y eso sucederá cada vez que yo cambio el valor del DEPARTAMENTO por eso se limpia el dato seleccionado de PROVINCIA porque se acaba de cargar nuevamente los datos de la PROVINCIA del respectivo DEPARTAMENTO
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #13 (permalink)  
Antiguo 31/07/2012, 16:31
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

que si y como haria para que no se limpiara la tabla provincias que permanesca listada porque cierto que le mande un value y debe permanecer listado esos datos
ayuda porfa.
  #14 (permalink)  
Antiguo 31/07/2012, 16:32
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

pero yo solo he hecho clik en el combo de provincia y se limpio porque
  #15 (permalink)  
Antiguo 31/07/2012, 16:34
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

amigo y donde coloco la variable combo
  #16 (permalink)  
Antiguo 31/07/2012, 16:36
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

revisando el codigo en esta parte tienes

Código vb:
Ver original
  1. Private sub dgDatos_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) Handles dgDatos.EditingControlShowing
  2. * * *
  3. * * *If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then ' Validando si el control es de tipo combobox edit
  4. * * * *
  5. * * * * If e.ColumnIndex = 0 ' Valida si el index es igual al combo primario en donde vas a realizar el filtro
  6. * * * * Dim CellTextBox As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl)
  7. * * * * RemoveHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
  8. * * * * AddHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
  9. * * *End If
  10. * * *End If
  11. * * *
  12. End Sub
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #17 (permalink)  
Antiguo 31/07/2012, 16:38
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

haci lo hise mire

Private Sub dgvsalud_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles dgvsalud.EditingControlShowing
If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then ' Validando si el control es de tipo combobox edit

If dgvsalud.CurrentCell.ColumnIndex = 0 Then ' Valida si el index es igual al combo primario en donde vas a realizar el filtro
Dim CellTextBox As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl)
RemoveHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
AddHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
End If
End If

End Sub
Sub CellTextBox_SelectionChangeCommited(ByVal sender As Object, ByVal e As EventArgs)

Dim c As ComboBox = TryCast(sender, ComboBox)
Dim value As Object = c.SelectedValue
Dim Combo As DataGridViewComboBoxColumn = TryCast(dgvsalud.Columns(dgvsalud.CurrentCell.Colu mnIndex, DataGridViewComboBoxColumn)

dsc_eps.DataSource = lobjTipoSeguro.fcboseguros(value)
dsc_eps.ValueMember = "cod_tipo_seguro"
dsc_eps.DisplayMember = "dsc_tipo_seguro"

End Sub
  #18 (permalink)  
Antiguo 31/07/2012, 16:40
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: filtrar combox dentro de datagridview vb net

Cita:
Iniciado por leochavez Ver Mensaje
haci lo hise mire

Private Sub dgvsalud_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles dgvsalud.EditingControlShowing
If TypeOf e.Control Is DataGridViewComboBoxEditingControl Then ' Validando si el control es de tipo combobox edit

If dgvsalud.CurrentCell.ColumnIndex = 0 Then ' Valida si el index es igual al combo primario en donde vas a realizar el filtro
Dim CellTextBox As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl)
RemoveHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
AddHandler CellTextBox.SelectionChangeCommitted, AddressOf CellTextBox_SelectionChangeCommited
End If
End If

End Sub
Sub CellTextBox_SelectionChangeCommited(ByVal sender As Object, ByVal e As EventArgs)

Dim c As ComboBox = TryCast(sender, ComboBox)
Dim value As Object = c.SelectedValue
Dim Combo As DataGridViewComboBoxColumn = TryCast(dgvsalud.Columns(dgvsalud.CurrentCell.Colu mnIndex, DataGridViewComboBoxColumn)

dsc_eps.DataSource = lobjTipoSeguro.fcboseguros(value)
dsc_eps.ValueMember = "cod_tipo_seguro"
dsc_eps.DisplayMember = "dsc_tipo_seguro"

End Sub
Esta parte de aca

If dgvsalud.CurrentCell.ColumnIndex = 0

es importante tienes que ponerlo el indice de la columna "departamento" sino todas las columnas de tipo combo van a cambiar segun el codigo que he puesto
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #19 (permalink)  
Antiguo 31/07/2012, 16:43
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

si lo puse es la que esta en primera posicio o sera porque el llenado del combo de departamento lo hago en el load
  #20 (permalink)  
Antiguo 01/08/2012, 10:33
 
Fecha de Ingreso: febrero-2012
Ubicación: San juan de luriguashington
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: filtrar combox dentro de datagridview vb net

SOLUCIONADO GRACIAS

Imports System.Data.SqlClient
Public Class Form1
Dim dv As DataView
Dim ds As New DataSet
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dt As New DataTable
Dim strConn As String
Dim da, daProducts As SqlDataAdapter
Dim conn As SqlConnection
strConn = "Data Source=172.0.27.8;Initial Catalog=Northwind;Integrated Security=True"
conn = New SqlConnection(strConn)
da = New SqlDataAdapter("Select * from Categories", conn)
daProducts = New SqlDataAdapter("Select * from Products", conn)
da.Fill(ds, "Categories")
daProducts.Fill(ds, "Products")
dt.Columns.Add("Category", GetType(Integer))
dt.Columns.Add("Product")
DataGridView1.AutoGenerateColumns = False
DataGridView1.DataSource = dt
Dim dgvCombo As New DataGridViewComboBoxColumn
With dgvCombo
.Width = 150
.DataSource = ds.Tables("Categories")
.DisplayMember = "CategoryName"
.DataPropertyName = "CategoryID"
.ValueMember = "CategoryID"
.HeaderText = "Category"
End With
dv = New DataView(ds.Tables("Products"))
DataGridView1.Columns.Add(dgvCombo)
Dim dgvFilter As New DataGridViewComboBoxColumn
With dgvFilter
.Width = 150
.DisplayMember = "ProductName"
.DataPropertyName = "ProductName"
.HeaderText = "Product"
End With
DataGridView1.Columns.Add(dgvFilter)
End Sub

Private Sub DataGridView1_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventAr gs) Handles DataGridView1.CellBeginEdit
If e.ColumnIndex = 1 Then
Dim dgvCbo As DataGridViewComboBoxCell = TryCast(DataGridView1(e.ColumnIndex, e.RowIndex), DataGridViewComboBoxCell)
If dgvCbo IsNot Nothing Then
Dim str As String = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value.ToString
dv = New DataView(ds.Tables("Products"))
dv.RowFilter = "CategoryID = " & str
dgvCbo.DataSource = dv
End If
End If
End Sub

Private Sub DataGridView1_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
If e.ColumnIndex = 2 Then
Dim dgvCbo As DataGridViewComboBoxCell = TryCast(DataGridView1(e.ColumnIndex, e.RowIndex), DataGridViewComboBoxCell)
If dgvCbo IsNot Nothing Then
dv = New DataView(ds.Tables("Products"))
dgvCbo.DataSource = dv
End If
End If
End Sub

Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArg s) Handles DataGridView1.DataError
e.Cancel = True
End Sub

Private Sub DataGridView1_DefaultValuesNeeded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) Handles DataGridView1.DefaultValuesNeeded
e.Row.Cells(0).Value = 1
End Sub
End Class

Etiquetas: combox, datagridview, filtrar, net, vb, windows
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 07:46.