Visual Basic.NET - Eliminar datos en ComboBox .net con datasource

   
Vista:

Eliminar datos en ComboBox .net con datasource

Publicado por Emilio (12 intervenciones) el 14/04/2014 15:40:28
Tengo 2 combobox enlazados y lo que pasa que no me hace la eliminacion de los datos cuando cambio el primero, los datos se van agregando debajo de los que estaban antes. he probado todas las soluciones que he visto en internet y no encuentro ninguna solucion.

las ya probadas:

cboCombo.DataSource = Nothing
cboCombo.ValueMember = Nothing
cboCombo.DisplayMember = Nothing
cboCombo.DropDownWidth = 1
cboCombo.SelectedValue = Nothing
cboCombo.Text = Nothing

cboCombo.items.clear()

Dim c, x As Double
c = cboCombo.Items.Count
While x < c
x = x + 1
cboCombo.Items.RemoveAt(x - 1)
End While


y ninguna funciona espero que me ayuden

codigo de la BD
' agregar primer combobox

Public Function obteneridholding() As DataSet
conn.Conectar()
Dim sql As String = "SELECT idholding,nombre FROM Holding"
cmd = New SqlCommand(sql, conn.conector)
dt.SelectCommand = cmd
dt.Fill(ds, "Holding")
conn.Desconectar()
Return ds
End Function

' agregar al combobox dependiente

Public Function obteneridsociedadporholding(ByVal id As Integer) As DataSet
holdin.id = id
obteneridholdingPorID(holdin)

Dim id2 As Integer
id2 = Convert.ToInt32(id)
Dim sql As String = "SELECT idsociedad,nombre FROM Sociedad WHERE idholding = '" & holdin.codigo & "'"
conn.Conectar()
cmd = New SqlCommand(sql, conn.conector)
dt.SelectCommand = cmd
dt.Fill(ds, "Sociedad")
Return ds
conn.Desconectar()
End Function

' codigo del formulario

Private Sub IngresoInfo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cbholding.DataSource = gestionsol.obteneridholding().Tables("Holding")
cbholding.DisplayMember = "nombre"
cbholding.ValueMember = "idholding"

cbmaestro.DataSource = master.ObtenerMaestro().Tables("Maestro")
cbmaestro.DisplayMember = "nombre"
cbmaestro.ValueMember = "idmaestro"

cbsucursal.DataSource = gestionsol.obternersucursal().Tables("Sucursal")
cbsucursal.DisplayMember = "nombre"
cbsucursal.ValueMember = "idsucursal"

cbprioridad.Items.Add("Alta")
cbprioridad.Items.Add("Normal")
cbprioridad.Items.Add("Baja")

cbprioridad.SelectedIndex = 1
txtcantidad.Text = "1"
txtcantidad.Enabled = False

cbsucursal.Enabled = True

End Sub


Private Sub cbholding_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbholding.SelectionChangeCommitted
limpiarcb(cbsociedad)
cbsociedad.DataSource = gestionsol.obteneridsociedadporholding(cbholding.SelectedValue).Tables("Sociedad")
cbsociedad.DisplayMember = "nombre"
cbsociedad.ValueMember = "idsociedad"

If cbholding.SelectedValue = 1 Then
cbsucursal.Enabled = True
cbsucursal.DataSource = gestionsol.obternersucursal().Tables("Sucursal")
cbsucursal.DisplayMember = "nombre"
cbsucursal.ValueMember = "idsucursal"
cksap.Checked = True
cksmb.Checked = True
ckpersonas.Checked = True


Else
cbsucursal.Enabled = False
cksap.Checked = False
cksmb.Checked = False
ckpersonas.Checked = False
End If
End Sub

Public Sub limpiarcb(ByVal cboCombo As ComboBox)
cboCombo.DataSource = Nothing
cboCombo.ValueMember = Nothing
cboCombo.DisplayMember = Nothing
cboCombo.DropDownWidth = 1
cboCombo.SelectedValue = Nothing
cboCombo.Text = Nothing

Dim c, x As Double
c = cboCombo.Items.Count
While x < c
x = x + 1
cboCombo.Items.RemoveAt(x - 1)
End While
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo

Eliminar datos en ComboBox .net con datasource

Publicado por giancarlo (280 intervenciones) el 15/04/2014 01:39:32
yo nunca use SelectionChangeCommitted, siempre use selection indexchanged o selectionvalue changed. estoy haciendolo de memoria ahora, asi que no puedo probar si funciona tu forma

si usas un datasource como datatable, dataset,databindig y quizas otros data... tienes que eliminar en ese origen, si lo agregaste con combo.items.add(... basta con lo siguiente:

Public Sub limpiarcb(ByVal cboCombo As ComboBox)
cboCombo.DataSource = Nothing 'con esto se debe borrar
End Sub

el porque se agrega ehmm, verifica tu codigo consulta SQL en el where o los registros de tu BD.
adicionalmente, te recomendaria usar datatable en lugar de dataset, ya que solo obtienes tablas (datatable) y no juntas todas las tablas en un control(dataset)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar datos en ComboBox .net con datasource

Publicado por Emilio (12 intervenciones) el 15/04/2014 16:32:19
Amigo gracias por la respuesta probare y te cuento como me fue, saludos y gracias por tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar datos en ComboBox .net con datasource

Publicado por Emilio (12 intervenciones) el 17/04/2014 15:02:26
Amigos me respondo a mi propia pregunta, la solucion fue muy simple al momento de crear las sentencias SQL no aplicaba el NEW DATASET y esto hacia que se grabara lo anterior y no me eliminara lo que tenia en el combobox. Marcare con cursiva la solución.

Public Function obteneridsociedadporholding(ByVal id As Integer) As DataSet
holdin.id = id
obteneridholdingPorID(holdin)

Dim id2 As Integer
id2 = Convert.ToInt32(id)
Dim sql As String = "SELECT idsociedad,nombre FROM Sociedad WHERE idholding = '" & holdin.codigo & "'"
conn.Conectar()
cmd = New SqlCommand(sql, conn.conector)
dt.SelectCommand = cmd
ds =New DataSet
dt.Fill(ds, "Sociedad")
Return ds
conn.Desconectar()
End Function

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar