Sorting a DropDownList using ArrayList
By Riley K
In most of the cases we want to dispaly a DDL in a sorted order, lets see how to do this using ArrayList
Consider the below DDL:
<asp:DropDownList ID="ddlSort" runat="server" AutoPostBack="true">
<asp:ListItem Text="India" Value="1" ></asp:ListItem>
<asp:ListItem Text="USA" Value="2" ></asp:ListItem>
<asp:ListItem Text="Canada" Value="3" ></asp:ListItem>
<asp:ListItem Text="Egypt" Value="4" ></asp:ListItem>
<asp:ListItem Text="Japan" Value="5" ></asp:ListItem>
<asp:ListItem Text="China" Value="6" ></asp:ListItem>
<asp:ListItem Text="Dubai" Value="7" ></asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:Button ID="btnSort" Text="Sort DDL" runat="server" onclick="btnSort_Click" />
on click of a button i am sorting the ddl
public void SortDDL(DropDownList ddlControl)
{
ArrayList textList = new ArrayList();
ArrayList valueList = new ArrayList();
//I am adding the DDL items to array list and sorting using the ArrayList Sort method
foreach (ListItem li in ddlControl.Items)
{
textList.Add(li.Text);
}
textList.Sort();
//using the FindByText method i am finding the corresponding value of eact item in DDl and adding to valueList ArrayList
foreach (object item in textList)
{
string value = ddlControl.Items.FindByText(item.ToString()).Value;
valueList.Add(value);
}
ddlControl.Items.Clear();
//now i am repopulating the DDL with the new sorted values
for (int i = 0; i < textList.Count; i++)
{
ListItem objListItem = new ListItem(textList[i].ToString(), valueList[i].ToString());
ddlControl.Items.Add(objListItem);
}
}
protected void btnSort_Click(object sender, EventArgs e)
{
SortDDL(ddlSort);
}
}
What i have done is i took 2 arraylist one for ddl text and other for its value and sorting the array list and again populating the DDL, very simple and efficient.
Sorting a DropDownList using ArrayList (1406 Views)