Discussion:
Ordenar DropDownList Alfabeticamente
(demasiado antiguo para responder)
yerex_tf
2007-05-19 14:01:04 UTC
Permalink
Buenas. A ver si alguien me puede hechar una mano.

SITUACIÓN:
Tengo un DropDownList relleno con los nombres de los paises, generado
automáticamente gracias al espacio de nombres: System.Globalization, a
variables CultureInfo (que coge un código de todas las culturas del mundo) y
RegionInfo (que en base al código cogido obtengo el nombre del país).

PROBLEMA: Los países se ordenan en el mismo orden de los códigos obtenidos,
Que son dos caracteres en ingles de la cultura, seguidos de 2 caracteres del
pais al que pertenece: p.e. (ar-SA) que sería cultura arabe, pais:arabia
saudi.
Entonces en base a eso el DropDownList se va rellenando con los paises en
ese orden. con lo cual está todo desordenado al final.

PREGUNTA: ¿A alguien se le ocurre alguna solución para ordenar un
dropdowlist, u otra forma de conseguir un dropdownlist con los países que no
sea metiendolos a pelo todos?

Muchas gracias. Espero respuesta.
Jose A. Fernandez
2007-05-21 02:36:12 UTC
Permalink
Hola Yerex
Interesante lo que estas haciendo con la clase CultureInfo y
RegionInfo, no lo sabia.
Estas utilizando algo asi?
- Utilizar la clase CultureInfo
http://msdn2.microsoft.com/es-es/library/87k6sx8t(VS.80).aspx
Si puedes colocar una parte del codigo para ver simplemente como
implementas...pero seria algo como el enlace no?
Siempre se aprende algo nuevo.. :)

Bueno con respecto al ordenamiento el DropDownList puede aceptar como
proveedor de datos cualquier objeto que tenga implementada la interfaz
ICollection (si mal no recuerdo), No se como estas obteniendo pero si
por ejemplo es con un datatable o dataset podrias traerlo ordenado
desde la DB o mediante un dataview lo ordenas, pero no es tu caso.
Bueno pero vamos al caso practico puede aceptar como origen de datos
un objecto Coleccion y entre los objetos que nos brinda .NET existe
uno que se tiene como buen nombre SortedList, que implementa el
ordenamiento por nosotros (para que codificarlo no?, bueno a veces
necesitamos codificar una ordenamiento particular pero es otro tema)
Bueno la idea... es cargar tu "grupo" coleccion de paises en una
objecto SortedList
- Utilizar la clase CultureInfo
http://msdn2.microsoft.com/es-es/library/87k6sx8t(VS.80).aspx
Algo asi:
Dim paisesOrdenados As New SortedList()
'Y por cada pais
paisesOrdenados.Add(Clave, Valor)

Y luego el enlace propiamente dicho a tu control DropDownList
tuCtrlDropDownList.Datasource = paisesOrdenados
tuCtrlDropDownList.DataTextField = "value"
tuCtrlDropDownList.DataValueField = "key"
tuCtrlDropDownList.Databind


Espero que te sirva de ayuda o guia


Enlaces:
-------------
Utilizar la clase CultureInfo
http://msdn2.microsoft.com/es-es/library/87k6sx8t(VS.80).aspx

SortedList (Clase)
Representa una colección de pares de clave y valor ordenados por
claves a los que se puede tener acceso por clave y por índice.
http://msdn2.microsoft.com/es-es/library/system.collections.sortedlist(VS.80).aspx

Rellenar el control DropDownList en un sitio Web
http://msdn2.microsoft.com/es-es/library/ms227621(VS.80).aspx

_______________________
Jose A. Fernandez
Post by yerex_tf
Buenas. A ver si alguien me puede hechar una mano.
Tengo un DropDownList relleno con los nombres de los paises, generado
automáticamente gracias al espacio de nombres: System.Globalization, a
variables CultureInfo (que coge un código de todas las culturas del mundo) y
RegionInfo (que en base al código cogido obtengo el nombre del país).
PROBLEMA: Los países se ordenan en el mismo orden de los códigos obtenidos,
Que son dos caracteres en ingles de la cultura, seguidos de 2 caracteres del
pais al que pertenece: p.e. (ar-SA) que sería cultura arabe, pais:arabia
saudi.
Entonces en base a eso el DropDownList se va rellenando con los paises en
ese orden. con lo cual está todo desordenado al final.
PREGUNTA: ¿A alguien se le ocurre alguna solución para ordenar un
dropdowlist, u otra forma de conseguir un dropdownlist con los países que no
sea metiendolos a pelo todos?
Muchas gracias. Espero respuesta.
Loading...