对`CheckBoxList`中的项进行排序

时间:2012-08-17 05:03:17

标签: c# asp.net

我有一个DropDownList,列表中的项目如下:

Bedroom
Kitchen
Garden

因此,在从上面的列表中选择任何一项后,我有一个TextBox,其中给出了一个数字。因此,根据TextBox中给出的数字,地点数量将添加到CheckBoxList

例如,如果我选择“卧室”并将数字设为“3”,则CheckBoxList项目将如下所示:

Bedroom1
Bedroom2
Bedroom3

我面临的问题是,由于可以从CheckBoxList中删除任何随机项,因此不会对项目进行排序。例如,如果我删除“Bedroom2”,则列表项将为:

Bedroom1  
Bedroom3  

如果再次从DropDownList中选择“卧室”并给出一个数字,例如“2”,则CheckBoxList中的项目将为:

Bedroom1
Bedroom3
Bedroom1
Bedroom2

无论我选择DropDownList中的任何项目,这都是同样的问题。

所以有人可以帮助我对这些项目的分类如何添加。它应该根据w.r.t在DropDownList

中的每个位置进行排序

2 个答案:

答案 0 :(得分:7)

试试这个

        var items = CheckBoxList1.Items
            .Cast<ListItem>()
            .OrderBy(i=>i.Text)
            .ToArray();
        CheckBoxList1.Items.Clear();
        CheckBoxList1.Items.AddRange(items);

答案 1 :(得分:0)

您可以在将项目添加到CheckBoxList之前将项目添加到 ArrayList 。然后排序数组列表,然后将DataSource提供给CheckBoxList和DataBind()

 if(!Page.IsPostBack)
 {  
        //Create two ArrayLists for sorting items
        ArrayList listItems1 = new ArrayList();
        ArrayList listItems2 = new ArrayList();

        int q1=Convert.ToInt16(TextBox1.Text);
        for (int i = 1; i <= q1; i++)
        { 
            string t1 = DroDownList1.SelectedItem.ToString().Trim();
            //Add items hereusing .Add() method of ArrayList
            listItems1.Add(string.Concat(t1, i));
            listItems2.Add(DropDownList1.SelectedItem.Text);
        }

        //Sort your items using .Sort() method of ArrayList
        listItems1.Sort()
        listItems2.Sort()

        //Bind your items to your CheckBoxLists
        CheckBoxList1.DataSource = listItems1;
        CheckBoxList2.DataSource = listItems2;  
        CheckBoxList1.DataBind();
        ChackBoxList2.DataBind();  
    } 

这是原始的link