ASP.NET – Ordenando o controle Lisbox

Funções utilitárias sempre quebram um bom galho. Sem muito rodeio, o código abaixo efetua a ordenação dos itens de um controle ASP.NET ListBox:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/// <summary>
/// Ordena um listbox em ordem Ascendente
/// </summary>
/// <param name="ListBox">O controle ListBox a ser ordenado</param>
/// <param name="ByValue">True se a ordenação deve ser feita pelo Valor(Value)
/// ou False para orndenar pelo Texto (Text)</param> 
public static void sortListBox(ref ListBox ListBox, bool ByValue)
{
	SortedList ListItems = new SortedList();
 
	// adicionar os items do ListBox ao SortedList 
	foreach (ListItem Item in ListBox.Items)
	{
		if (ByValue) ListItems.Add(Item.Value, Item);
		else ListItems.Add(Item.Text, Item);
	}
 
	// limpa o controle
	ListBox.Items.Clear();
 
	// adicionar o itens ordenados
	for (int i = 0; i < ListItems.Count; i++)
	{
		ListBox.Items.Add((ListItem)ListItems[ListItems.GetKey(i)]);
	}
}

Como menciona o comentário, o segundo parâmetro define se os itens serão ordenados pela propriedade Value ou Text. Dei uma “brasileirada” no código. A referência original pode ser vista neste link:

http://forums.asp.net/p/1202130/2094935.aspx

Bom proveito!

Comentários

comentários