Friday, October 19, 2007

ListBox Multiselect

Hola de nuevo

Hace unos dias, adicioné un control ListBox a una de mis páginas. El control debería utilizar la propiedad SelectionMode = Multiple, permitiendome seleccionar varias opciones del control.  Para mi sorpresa, cuando intentaba hacer esto, y en mi código detectar las opciones seleccionadas, sencillamente solo me retornaba como seleccionada, la primera opción.
Supongamos que cargo mi control en el primer postback de este modo:

if

(!Page.IsPostBack)
{
  ListBox1.Items.Add(
new ListItem("Rock and Roll","1"));
  ListBox1.Items.Add(
new ListItem("Country","1"));
  ListBox1.Items.Add(
new ListItem("Salsa", "1"));
}

Diganme que notan algo peculiar, porque a mí me tomó medio dia darme cuenta del causante de este problema. Si señores, el código asociado a cada opción es el mismo, ese es el "problema". No es cuestión de fijarle AutoPostback=true al control, como sugieren algunos foros, no es fijar la propiedad SmartNavigation=true en VS.NET 2003, no es la forma de recorrer el control para saber qué opciones están seleccionadas, no señores, deben es evitar que el código se repita, y de este modo el problema desaparace. Por ejemplo cuando tengan esto en un botón que me permita imprimir los items seleccionados, el programa debe funcionar sin ningun problema, y sin mostrar como seleccionada solo la primera opción de su listado.

foreach
(ListItem miItem in ListBox1.Items)
{
  if (miItem.Selected)
    Response.Write(miItem.Text);
}

Dos moralejas, primera hay foros alimentados por personas realmente perversas que terminan confundiendo a sus usuarios y segunda, a mí modo de ver aqui hay o un bug o algo que a mí parecer no debería tener este comportamiento.

Feliz solución!!

1 comment:

Anonymous said...

Gracias e as solucionado mi problema y tienes razon lei muchos foros y termine confundido pero gracias a ti lo logre solucionar