我怎样才能在asp.net中对下拉项进行排序?

时间:2013-12-16 18:06:48

标签: c# asp.net vb.net

我在asp.net中有一个下拉列表,我从数据库中添加了一些东西。最后我还手动添加了一些东西。现在我需要以快速简单的方式对这些项目进行排序。下拉选择的值为数字。

对象链接对我的问题有用吗?如果您的答案是肯定的,请说明。

5 个答案:

答案 0 :(得分:5)

您可以创建一个像这样的小实用程序方法来对DropDownList的项进行排序。

public static void SortListControl(ListControl control, bool isAscending)
{
    List<ListItem> collection;

    if (isAscending)
        collection = control.Items.Cast<ListItem>()
            .Select(x => x)
            .OrderBy(x => x.Text)
            .ToList();
    else
        collection = control.Items.Cast<ListItem>()
            .Select(x => x)
            .OrderByDescending(x => x.Text)
            .ToList();

    control.Items.Clear();

    foreach (ListItem item in collection)
        control.Items.Add(item);
}

用法

protected void Page_Load(object sender, EventArgs e)
{
    for (int i = 0; i < 10; i++)
        DropDownList1.Items.Add(new ListItem(i.ToString(), i.ToString()));

    // Sort the DropDownList's Items by descending
    SortListControl(MyDropDownList, false);
}

答案 1 :(得分:1)

没有代码,很难回答你的问题。但这很可能是你在寻找的东西。 IEnumerable.OrderBy()

  

根据键按升序对序列的元素进行排序。

答案 2 :(得分:1)

使用此:

        SortedList<int, string> mySortedList = new SortedList<int, string>();
        mySortedList.Add(1, "Hi");
        mySortedList.Add(2, "Hello");
        mySortedList.Add(3, "German");

        dropDownList1.DataTextField = "Value";
        dropDownList1.DataValueField = "Key";
        dropDownList1.DataSource = mySortedList;
        dropDownList1.DataBind();

答案 3 :(得分:1)

以简单的方式对下拉列表项进行排序。首先通过适配器填充数据集,然后从数据集填充数据视图,并使用所需的列对数据视图进行排序。最后将下拉列表与dataview绑定。

步骤1:创建连接对象,然后使用dataadapter填充数据集

示例:

I)按如下方式创建连接对象:

SqlConnection con=new SqlConnection("Data Source=servername;Database=dbname;Integrated Security=true"); //if windows authentication 
(or) 
SqlConnection con=new SqlConnection("Data Source=servername;Database=dbname;user id=xxx;pwd=xxx"); //if sql authentication 

II)使用查询和连接对象为适配器类创建对象,如下所示:

SqlDataAdapter sda=new SqlDataAdapter("query",con);

步骤2:创建DataSet对象并使用适配器对象填充它,如下所示:

DataSet ds=new DataSet();
sda.fill(ds);// filling sda data into dataset using fill method of adapter class

步骤3:检查数据集是否为空。如果非空,则创建DataView对象并使用sorted选项填充它,并按如下方式绑定下拉列表:

if(ds.Tables[0].rows.count>0)
{
    DataView dv=new DataView();
    dv.Table=ds.Tables[0]; // filling dataview with dataset
    dv.sort="columnname";
    DropDownList1.DataSource=dv;
    DropDownList1.DataTextField="columnname";
    DropDownList1.DataBind();
    DropDownList1.Items.Insert(0,"select");
}

答案 4 :(得分:0)

您可以将其设置为SortedList,然后只调用list.Sort()方法。

您可以将列表设置为数据源,并使用键/值字段作为DataTextField和DataValueField。

StackOverflow question on sorted list as datasource