1

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

Bedroom
Kitchen
Garden

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

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

Bedroom1
Bedroom2
Bedroom3

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

Bedroom1  
Bedroom3  

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

Bedroom1
Bedroom3
Bedroom1
Bedroom2

无论我从DropDownList.

所以有人可以帮助我对这些项目进行排序,无论它们是如何添加的。它应该根据 wrt 中的每个位置进行排序DropDownList

4

2 回答 2

7

尝试这个

        var items = CheckBoxList1.Items
            .Cast<ListItem>()
            .OrderBy(i=>i.Text)
            .ToArray();
        CheckBoxList1.Items.Clear();
        CheckBoxList1.Items.AddRange(items);
于 2012-08-17T05:21:31.993 回答
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();  
    } 

这是原始链接

于 2012-08-17T05:22:58.153 回答