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

Cargar datos de un array en un ComboBox

Estas en el tema de Cargar datos de un array en un ComboBox en el foro de .NET en Foros del Web. Buenas :) Estoy teniendo un problema a la hora de cargar un dato de un array en un combobox. Os explico un poco... tendo el ...
  #1 (permalink)  
Antiguo 05/02/2010, 05:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 1
Cargar datos de un array en un ComboBox

Buenas :)

Estoy teniendo un problema a la hora de cargar un dato de un array en un combobox.

Os explico un poco...

tendo el siguiente procedimiento para cargar los datos en el combo:


Código vb:
Ver original
  1. Private Sub cbSociosModificar_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles cbSociosModificar.MouseClick
  2.         CargoClientes()
  3.     End Sub

Código vb:
Ver original
  1. Private Sub CargoClientes()
  2.         Dim i As Byte
  3.         If usuarios = 0 Then
  4.             MessageBox.Show("No hay clientes dados de alta para consultar", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
  5.         Else
  6.             For i = 0 To UBound(Clientes)
  7.                 If cbSociosModificar.Items(i) <> Clientes(i).Socio Then
  8.                     cbSociosModificar.Items.Add(Clientes(i).Socio)
  9.                 Else
  10.  
  11.                 End If
  12.  
  13.             Next
  14.         End If
  15.     End Sub


Es la tipica aplicación de gestión... creas un cliente, lo guardas en un array y despues lo consultas.

Mi problema... a la hora de conultarlo se me duplica.

Como veis en el codigo de arriba, el codio se carga en el combo cuando se hace click ok? pues cada vez que haces click en el combo, se carga el codigo una y otra vez repetido...

Por ejemplo, creo un cliente con codigo 12345, y a la hora de consultar (no cambio de formulario, es el mismo form) al hacer click en el combobox, aparece lo siguiente:

12345

Si hago click otra vez:

12345
12345

Si hago click otra vez

12345
12345
12335

Y así succesivamente....

Yo solo quiero que salga una vez, si no está repetido claro.

Espero que entendais mi problema... Si hay algo que no está claro, preguntarmelo, os puedo pasar el código sin problemas.

Salu2 y gracias por adelantado,

Chechu.
  #2 (permalink)  
Antiguo 05/02/2010, 05:31
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Cargar datos de un array en un ComboBox

Casi diria que viene causado por el evento Postback que se genera al hacer el click.

Por curiosidad, podrias poner el código del evento Load? Estoy seguro al 99% de que el fallo está allí ;)
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 05/02/2010, 05:44
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Cargar datos de un array en un ComboBox

Buenas Malenko,

Te pego, en orden de ejecución lo que hace el programa a la hora de cargar lso datos:

1. Creo que Cliente: ToolBarMenuClientes -> Crear

Código vb:
Ver original
  1. Private Sub ToolBarMenuClientes_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBarMenuClientes.ButtonClick
  2.         If e.Button Is Me.ToolBarButton1 Then
  3.             PreparoCrear()
  4.         End If
  5.  
  6.         If e.Button Is Me.ToolBarButton2 Then
  7.             PreparoModificar()
  8.         End If
  9.  
  10.         If e.Button Is Me.ToolBarButton3 Then
  11.             PreparoEliminar()
  12.         End If
  13.  
  14.         If e.Button Is Me.ToolBarButton4 Then
  15.             PreparoBuscar()
  16.         End If
  17.  
  18.     End Sub

1.1 Preparo Crear:

Código vb:
Ver original
  1. Private Sub PreparoCrear()
  2.         lblfondo.Text = "GESTIÓN CLIENTES - NUEVA ALTA"
  3.         grpboxModificar.Visible = False
  4.         grpboxAlta.Visible = True
  5.         estado = "Nueva Alta"
  6.         CodigoCliente = CodigoCliente + 1
  7.         txtSocio.Text = CodigoCliente
  8.     End Sub

1.2 Creo el cliente y guardo los datos en el Array:

Código vb:
Ver original
  1. Private Sub btnRegistrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRegistrar.Click
  2.         Try
  3.             Dim check As Boolean = True
  4.             Dim ListaGeneros() As String
  5.  
  6.             If txtDNI.Text <> "" And txtNombre.Text <> "" And comboPob.Text <> "" And txtApellidos.Text <> "" And comboProv.Text <> "" And txtDireccion.Text <> "" And txtPostal.Text <> "" And txtTelefono.Text <> "" And txtObservacion.Text <> "" And ChkListGenero.Items.Count <> 0 Then
  7.                 If check = True Then
  8.                     If radioF.Checked = True Then
  9.                         radioM.Checked = False
  10.                     Else
  11.                         radioM.Checked = True
  12.                     End If
  13.                 End If
  14.  
  15.                 check = False
  16.  
  17.                 If check = False Then
  18.                     Dim Clientes As New ListaClientes
  19.  
  20.                     Clientes.Socio = txtSocio.Text
  21.                     Clientes.Dni = txtDNI.Text
  22.                     Clientes.Nombre = txtNombre.Text
  23.                     Clientes.Poblacion = comboPob.SelectedText
  24.                     Clientes.Apellidos = txtApellidos.Text
  25.                     Clientes.Provincia = comboProv.SelectedText
  26.                     Clientes.Direccion = txtDireccion.Text
  27.                     Clientes.CodigoPostal = txtPostal.Text
  28.                     Clientes.Telefono = txtTelefono.Text
  29.                     Clientes.Foto = DirImage
  30.  
  31.                     If radioF.Checked = True Then
  32.                         Clientes.Sexo = "Femenino"
  33.                     ElseIf radioM.Checked = True Then
  34.                         Clientes.Sexo = "Masculino"
  35.                     ElseIf radioF.Checked = False And radioM.Checked = False Then
  36.                         Clientes.Sexo = ""
  37.                     End If
  38.  
  39.                     Clientes.Observacion = txtObservacion.Text
  40.  
  41.                     If ckEdad.Checked = False Then
  42.                         Clientes.Edad = "no"
  43.                     Else
  44.                         Clientes.Edad = "si"
  45.                     End If
  46.  
  47.                     Dim i = 0
  48.  
  49.                     For i = 0 To ChkListGenero.CheckedItems.Count - 1
  50.                         ReDim Preserve ListaGeneros(i)
  51.                         ListaGeneros(i) = ChkListGenero.CheckedItems.Item(i)
  52.                     Next
  53.  
  54.                     For i = 0 To UBound(ListaGeneros)
  55.                         Clientes.Genero(i) = ListaGeneros(i)
  56.                         numGeneros += 1
  57.                     Next
  58.  
  59.                     insertarDatosArray(Clientes)
  60.                     LimpioCasillasAlta()
  61.                 End If
  62.             Else
  63.                 MessageBox.Show("Faltan datos por rellenar", "Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop)
  64.             End If
  65.         Catch ex As Exception
  66.             MessageBox.Show(ex.Message)
  67.         End Try
  68.     End Sub

2. Modifico el cliente (Para buscar su codigo): ToolBarMenuClientes -> Modificar

Código vb:
Ver original
  1. Private Sub ToolBarMenuClientes_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBarMenuClientes.ButtonClick
  2.         If e.Button Is Me.ToolBarButton1 Then
  3.             PreparoCrear()
  4.         End If
  5.  
  6.         If e.Button Is Me.ToolBarButton2 Then
  7.             PreparoModificar()
  8.         End If
  9.  
  10.         If e.Button Is Me.ToolBarButton3 Then
  11.             PreparoEliminar()
  12.         End If
  13.  
  14.         If e.Button Is Me.ToolBarButton4 Then
  15.             PreparoBuscar()
  16.         End If
  17.  
  18.     End Sub

2.1 Preparo Modificar:

Código vb:
Ver original
  1. Private Sub PreparoModificar()
  2.         lblfondo.Text = "GESTIÓN CLIENTES - MODIFICACIÓN"
  3.         grpboxAlta.Visible = False
  4.         grpboxModificar.Visible = True
  5.  
  6.         DesactivoCasillas()
  7.         btnActivaModificar.Visible = True
  8.         btnGuardarModificar.Text = "Guardar"
  9.         estado = "Modificación"
  10.     End Sub

2.2 Desactivo Casillas:

Código vb:
Ver original
  1. Private Sub DesactivoCasillas()
  2.         txtNombreModificar.ReadOnly = True
  3.         txtApellidosModificar.ReadOnly = True
  4.         txtDireccionModificar.ReadOnly = True
  5.         txtTelefonoModificar.ReadOnly = True
  6.         txtPostalModificar.ReadOnly = True
  7.         txtObservacionesModificar.ReadOnly = True
  8.         panelGenObsModificar.Enabled = False
  9.     End Sub

Hasta aqui todo bien no? demomento no ha entrado en juego el Combobox, ahora, como el cliente esta creado en el array, posicion 0, al hacer click en el combobox deberia aparecer el Numero de Socio, como identificardor, que al seleccionarlo rellenara las casillas con sus datos:

3.0 Hacemos CLick en el combobox:

Código vb:
Ver original
  1. Private Sub cbSociosModificar_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles cbSociosModificar.MouseClick
  2.         CargoClientes()
  3.     End Sub

3.1 CargoClientes:

Código vb:
Ver original
  1. Private Sub CargoClientes()
  2.         Dim i As Byte
  3.         If usuarios = 0 Then
  4.             MessageBox.Show("No hay clientes dados de alta para consultar", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
  5.         Else
  6.             For i = 0 To UBound(Clientes)
  7.                 cbSociosModificar.Items.Add(Clientes(i).Socio)
  8.             Next
  9.         End If
  10.     End Sub

3.2 Relleno los datos en el form:

Código vb:
Ver original
  1. Private Sub cbSociosModificar_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbSociosModificar.SelectedIndexChanged
  2.         Dim aux As Integer, i As Integer
  3.  
  4.         aux = cbSociosModificar.SelectedIndex
  5.  
  6.         txtNombreModificar.Text = Clientes(aux).Nombre
  7.         comboPobModificar.SelectedText = Clientes(aux).Poblacion
  8.         txtApellidosModificar.Text = Clientes(aux).Apellidos
  9.         comboProvModificar.SelectedText = Clientes(aux).Provincia
  10.         txtDireccionModificar.Text = Clientes(aux).Direccion
  11.         txtPostalModificar.Text = Clientes(aux).CodigoPostal
  12.         txtTelefonoModificar.Text = Clientes(aux).Telefono
  13.         FotoClienteModificar.ImageLocation = Clientes(aux).Foto
  14.         FotoClienteModificar.SizeMode = PictureBoxSizeMode.StretchImage
  15.         txtObservacionesModificar.Text = Clientes(aux).Observacion
  16.  
  17.         If Clientes(aux).Sexo = "Femenino" Then
  18.             radioFModificar.Checked = True
  19.             radioMModificar.Checked = False
  20.         Else
  21.             radioFModificar.Checked = False
  22.             radioMModificar.Checked = True
  23.         End If
  24.  
  25.         If Clientes(aux).Edad = "no" Then
  26.             ckEdadModificar.Checked = False
  27.         Else
  28.             ckEdadModificar.Checked = True
  29.         End If
  30.     End Sub

Espero que todo esto te sirva de ayuda... es casi casi todo el código, por no decir todo hehehe.

gracias otra vez.

Chechu.
  #4 (permalink)  
Antiguo 05/02/2010, 06:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Cargar datos de un array en un ComboBox

Me parece que sería más sencillo que usaras el método .FindStringExact(String) para comprobar si el valor existe o no entre los ítems cargados en el ComboBox.
Este método devuelve el subíndice de la lista de items donde haya una coincidencia exacta, o -1 si no se encuentra.
Con ese uso podrías simplemente verificar si lo tienes que ingresar o no...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/02/2010, 06:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Cargar datos de un array en un ComboBox

Perfectisima forma de controlar eso :D me ha funcionado.

Muchisimas grácias a los 2 por ayudarme :)

Salu2,

Chechu.

Etiquetas: combobox
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 10:27.