Ayuda para hacer ComboBox dinamicos.

Iniciado por GonzaFz, 31 Mayo 2012, 05:19 AM

0 Miembros y 2 Visitantes están viendo este tema.

GonzaFz

Bueno para ser simple y rapido, esto es en C#.
Necesito hacer unos combobox "dinamicos", me refiero a por ejemplo esos que te hacen elegir el Pais, y dependiendo cual pongas te muestra una lista de provincias.

Basicamente quiero hacer lo mismo, la unica forma que se me ocurrio y probe fue haciendo lo siguiente:

Código (csharp) [Seleccionar]

private void mision_SelectedIndexChanged(object sender, EventArgs e)
       {

           if (mision.SelectedIndex == 0)
           {
               nmision.Items.Add("1"); // AGREGAR AL SEGUNDO COMBOBOX
           }
       }

pero si luego vuelves a cambiar el primer combobox envez de cambiar la lista, agrega mas opciones.

Me gustaria si me pudiesen ayudar.
Gracias =).

PD: Me falto agregar que cada tipo de opcion debe tener un ID distinto a los anteriores ya que luego tengo que comprobar si esta seleccionado
Código (csharp) [Seleccionar]

 if (mision.SelectedIndex == 0)
{
      if (nmision.SelectedIndex == 15)
{
  // HACER ALGO
}
}


$Edu$

Pero puede ser buena forma la que usas, solo te falto borrar los items.

Es decir, tenemos el combox Pais con todas las lista de los paises, ya ordenados, y otro debajo que se llama combox Provincias que contiene la lista de las provincias de tu primer pais seleccionado por default en tu combox Pais, por ejemplo Argentina (que empieza con A).

Si elejimos un pais en el combox Pais, se ejecutara tu evento combopais_SelectedIndexChanged() y ahi haces un switch dependiendo la seleccion:

Código (csharp) [Seleccionar]


comboxProvincias.BorrarItems(); // esto ves vos como es, yo no me acuerdo ahora mismo. pero tienes que borrar todos los items.

switch (comboxPais.SelectedIndex)  // luego el switch
{
   case 0:  // supongamos que el 0 es Uruguay
    comboxProvincias.Items.Add("Artigas");
    comboxProvincias.Items.Add("Soriano");
    comboxProvincias.Items.Add("Tacuarembo");
    ...
    ...
    break;
 
  case 1:
   //agregar las provincias como arriba, y asi con todos
   break;

...
...
...
}



No se si es lo que buscas pero asi funcionaran digo yo los clasicos de elegir pais y te muestra las provincias.

seba123neo

si tendrias una base de datos queda mas elegante que poner los items fijos en el codigo.

aunque tambien esta la solucion de crear una clase con el ID y nombre, y luego usar la propiedad .DataSource del combo para hacer un "SELECT" (como si fuera una base de datos, pero sobre una coleccion de clases, asi te trae todos los que coinciden con el ID seleccionado, es re facil.

How can one ComboBox's items be determined by another?



La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

GonzaFz

#3
Cita de: seba123neo en 31 Mayo 2012, 21:14 PM
si tendrias una base de datos queda mas elegante que poner los items fijos en el codigo.

aunque tambien esta la solucion de crear una clase con el ID y nombre, y luego usar la propiedad .DataSource del combo para hacer un "SELECT" (como si fuera una base de datos, pero sobre una coleccion de clases, asi te trae todos los que coinciden con el ID seleccionado, es re facil.

How can one ComboBox's items be determined by another?





Pase el codigo a C# pero una parte no me funciona..
Código (csharp) [Seleccionar]
_with2.DataSource = CountryList.Where(f => f.ContinentID = mision.SelectedValue).ToList;

Seria esa linea (mision es mi combobox principal). Me marca que mision.SelectedValue no puede pasar de Objet a int..

Y si le pongo == me marca toda la linea diciendo que == no se puede aplicar en int y object ..

$Edu$

Fijate cual es int y cual es objet y converti el objet a int. Por lo menos es lo que te dice el error..

GonzaFz

¿Se hace con este codigo?
Código (csharp) [Seleccionar]
int max = int.Parse(mision.SelectedValue);


GonzaFz

Sucede que estoy de viaje y no tengo donde xD Pero me gustaria aclarar esta duda asi cuando vuelvo puedo terminar el programa ;) xD!.

Bueno pero si no te acuerdas me tocara esperar y probarlo jaja.