Desarrollo una página web en la que se muestran los elementos del cuadro de lista que se extraen de una base de datos. Dinámicamente agregué algunos artículos en él. Se agrega al final del cuadro de lista, por lo que quiero ordenar el elemento del cuadro de lista después de agregar elementos. Intenté Arraylist
para clasificar, pero no está funcionando.Ordene los elementos del cuadro de lista en C#
Respuesta
¿Quiere decir dinámicamente que agrega elementos a la lista a través de Javascript o después de la publicación detrás de somekind utilizando controles ASP.NET?
Si agrega dinámicamente usando Javascript, entonces su respuesta sería ordenar con jQuery y si después de la devolución de datos con ASP.NET debe utilizar el objeto de lista ubicado en System.Collections.Generic.
Hola eugeneK, Dijo que usó Arraylist para ordenar ... Así que supongo que lo está haciendo en el servidor. Pero ahora dudo, ¿tenemos arraylist en javascript o en JQuery? –
Prueba el siguiente código:
DataTable dt = new DataTable();
dt.Columns.Add("val", Type.GetType("System.Int32"));
DataRow dr;
for (int i = 1; i <= 31; i++)
{
dr = dt.NewRow();
dr[0] = i;
dt.Rows.Add(dr);
}
dt.AcceptChanges();
DataView dv = dt.DefaultView;
dv.Sort = "val desc";
ddlDay.DataTextField = "val";
ddlDay.DataValueField = "val";
ddlDay.DataSource = dv.ToTable();
ddlDay.DataBind();
Si ur vinculante el cuadro de lista mediante el establecimiento de origen de datos como DataTable poblada de datos DB entonces cuando se desea añadir un nuevo elemento en lugar de añadir el elemento de añadir el registro a la tabla de datos . A continuación, crear un DataView para esa tabla de datos, ordenar los datos en el DataView de la siguiente manera:
DataView dv = dt.DefaultView;
dv.Sort = "val desc";
a continuación, establecer el origen de datos del cuadro de lista como dv.ToTable()
no puedo entender lo que ha hecho aquí – Sakthivel
Hay que ordenar la tabla de datos antes de asignar como fuente de datos para el cuadro de lista .
DataTable.DefaultView.sort = "[Column Name]".
Como mencionó que está utilizando el método Agregar para agregar los Artículos de la Lista a la Lista, el método Agregar siempre agrega los Artículos de la Lista. Puede agregar elementos al índice deseado utilizando el método Insertar con índice. List.Insert (ListItem, índice)
Saludos
Prueba este código en PreRender
caso de su ListBox
.
System.Collections.SortedList sorted = new SortedList();
foreach (ListItem ll in ListBox1.Items)
{
sorted.Add(ll.Text, ll.Value);
}
ListBox1.Items.Clear();
foreach (String key in sorted.Keys)
{
ListBox1.Items.Add(new ListItem(key, sorted[key].ToString()));
}
¡Eres una leyenda! ¡Me detuve 4 horas más de lo que necesitaba! – Fandango68
Simplemente llame al ArrayList.Sort. Ejemplo de código en el enlace.
Sé que esta pregunta es bastante antiguo, pero yo estaba buscando en una manera de hacer esto sin clases Comparer, ArrayLists etc. Así que pensé en pegar el método que había utilizado para otros:
Atención: que mi método usa LINQ to Objects, por lo que solo funcionará en las versiones más recientes de Framework.
// get a LINQ-enabled list of the list items
List<ListItem> list = new List<ListItem>(ListBoxToSort.Items.Cast<ListItem>());
// use LINQ to Objects to order the items as required
list = list.OrderBy(li => li.Text).ToList<ListItem>();
// remove the unordered items from the listbox, so we don't get duplicates
ListBoxToSort.Items.Clear();
// now add back our sorted items
ListBoxToSort.Items.AddRange(list.ToArray<ListItem>());
¿Cómo funcionaría esto en VB.NET? Y su código no destruye todos los valores, como en este ejemplo: http://www.devcurry.com/2009/07/sort-items-in-aspnet-dropdownlist-using.html ¡Gracias! – Flo
No, en la primera línea, donde leo los objetos ListItem, mantengo la referencia a ellos en la variable "list". Entonces, cuando se borra la lista, esos mismos elementos se agregan luego, solo en un orden diferente. Mi VB.NET está extremadamente oxidado, pero al ver cómo estoy usando la sintaxis del método LINQ, creo que puede hacer las mismas llamadas de forma similar. Simplemente recuerde incluir (Importar) la biblioteca System.Linq. –
Inútil a menos que VS2010 en adelante – Fandango68
Este es el código vb Private Sub sortList (ByVal lb Como DropDownList) 'obtener una lista habilitado para LINQ de los elementos de la lista lista Dim como nuevo la lista (de ListItem) (lb.Items.Cast (Of ListItem)()) 'use LINQ to Objects para ordenar los elementos según sea necesario list = list.OrderBy (Function (li) li.Text) .ToList() ' elimine los elementos desordenados del listbox, así que no obtenga duplicados lb.Items.Clear() 'ahora vuelva a agregar nuestros artículos ordenados lb.Items.AddRange (list.ToArray()) End Sub
Sé que esto es muy similar a la respuesta de The King, pero así es como funcionó para mí.
System.Collections.SortedList sorted = new System.Collections.SortedList();
foreach (ListItem ll in ListInQuestion.Items)
{
sorted.Add(ll.Value, ll.Text);//yes, first value, then text
}
ListInQuestion.Items.Clear();
foreach (String key in sorted.Keys)
{
ListInQuestion.Items.Add(new ListItem(sorted[key].ToString(), key));// <-- look here!
}
Espero que esto funcione para otra persona.
- 1. WPF - ocultar elementos del cuadro de lista
- 2. Ordene una lista de elementos no triviales en R
- 3. Seleccionar elementos en un cuadro de lista usando C#
- 4. Deseleccionar todos los elementos en un cuadro de lista
- 5. Ordene una lista de punteros
- 6. selección de programación elementos/Índices en un cuadro de lista
- 7. Ordene una sola lista vinculada
- 8. plantilla diferente para los elementos de la lista desplegable del cuadro combinado y de elemento seleccionado
- 9. Ir a través de un cuadro de lista revisado y comprobar todos los elementos C#
- 10. Obtener elementos a la vista en un cuadro de lista
- 11. Agregar elementos en un cuadro de lista con varias columnas
- 12. ¿Cómo recorro los elementos en un cuadro de lista y luego los quito?
- 13. ¿Anida los elementos de la lista dentro de los elementos de lista de una lista ordenada?
- 14. Los espacios entre artículos en mi cuadro de lista
- 15. C# - Lista - eliminar todos los elementos pero NO los primeros
- 16. - Ordene una matriz con elementos distintos de LogLogN
- 17. WPF C#: Reorganizar elementos en el cuadro de lista arrastrando y soltando
- 18. Cómo hacer que una clase JXTreeTable ordene sus elementos superiores
- 19. Seleccionar varios elementos en el cuadro de lista en wpf usando C#
- 20. Guardar los elementos de un cuadro de lista en un archivo de texto
- 21. ¿Cómo se seleccionan los elementos en un cuadro de lista usando jQuery?
- 22. trucos para elementos flotantes dentro de los elementos de lista
- 23. Lanzar una colección de elementos de un cuadro de lista a una lista genérica
- 24. Clojure - Autoupdating cuadro de lista
- 25. todos los elementos en una lista
- 26. Ordene los resultados de Kohana ORM
- 27. Lista desplegable de cuadro combinado
- 28. cuadro de lista para una lista vacía
- 29. ¿Cómo se pueden deseleccionar todos los elementos de un cuadro de lista usando jquery
- 30. php DirectoryIterator Ordene los archivos por fecha
Sería más eficiente ordenar la lista ** antes ** de agregar los elementos al cuadro de lista. –
Pero cuando agrego los artículos que añado al fin. Pero lo necesito en el lugar apropiado. – Sakthivel
¿Por qué no pega un código de muestra? – RichardOD