Sorting a DropDownList? - C#, ASP.NET

前端 未结 23 1138
慢半拍i
慢半拍i 2020-12-08 19:17

I\'m curious as to the best route (more looking towards simplicity, not speed or efficiency) to sort a DropDownList in C#/ASP.NET - I\'ve looked at a few recommendations b

23条回答
  •  醉话见心
    2020-12-08 19:49

    Try This:

    /// 
    /// AlphabetizeDropDownList alphabetizes a given dropdown list by it's displayed text.
    /// 
    /// The drop down list you wish to modify.
    /// 
    private void AlphabetizeDropDownList(ref DropDownList dropDownList)
    {
        //Create a datatable to sort the drop down list items
        DataTable machineDescriptionsTable = new DataTable();
        machineDescriptionsTable.Columns.Add("DescriptionCode", typeof(string));
        machineDescriptionsTable.Columns.Add("UnitIDString", typeof(string));
        machineDescriptionsTable.AcceptChanges();
        //Put each of the list items into the datatable
        foreach (ListItem currentDropDownListItem in dropDownList.Items) {
                string currentDropDownUnitIDString = currentDropDownListItem.Value;
                string currentDropDownDescriptionCode = currentDropDownListItem.Text;
                DataRow currentDropDownDataRow = machineDescriptionsTable.NewRow();
                currentDropDownDataRow["DescriptionCode"] = currentDropDownDescriptionCode.Trim();
                currentDropDownDataRow["UnitIDString"] = currentDropDownUnitIDString.Trim();
                machineDescriptionsTable.Rows.Add(currentDropDownDataRow);
                machineDescriptionsTable.AcceptChanges();
        }
        //Sort the data table by description
        DataView sortedView = new DataView(machineDescriptionsTable);
        sortedView.Sort = "DescriptionCode";
        machineDescriptionsTable = sortedView.ToTable();
        //Clear the items in the original dropdown list
        dropDownList.Items.Clear();
        //Create a dummy list item at the top
        ListItem dummyListItem = new ListItem(" ", "-1");
        dropDownList.Items.Add(dummyListItem);
        //Begin transferring over the items alphabetically from the copy to the intended drop
         downlist
        foreach (DataRow currentDataRow in machineDescriptionsTable.Rows) {
                string currentDropDownValue = currentDataRow["UnitIDString"].ToString().Trim();
                string currentDropDownText = currentDataRow["DescriptionCode"].ToString().Trim();
                ListItem currentDropDownListItem = new ListItem(currentDropDownText, currentDropDownValue);
        //Don't deal with dummy values in the list we are transferring over
        if (!string.IsNullOrEmpty(currentDropDownText.Trim())) {
            dropDownList.Items.Add(currentDropDownListItem);
        }
    }
    

    }

    This will take a given drop down list with a Text and a Value property of the list item and put them back into the given drop down list. Best of Luck!

提交回复
热议问题