2012-08-17 2 views
1

J'ai un DropDownList, et les éléments de la liste est la suivante:Tri des éléments dans `CheckBoxList`

Bedroom 
Kitchen 
Garden 

Donc, après avoir choisi une option dans la liste ci-dessus, j'ai une TextBox, dans lequel un nombre est donné. Par conséquent, en fonction du nombre donné dans le TextBox, le nombre d'emplacements va être ajouté au CheckBoxList.

Par exemple, si je sélectionne « Chambre » et donner le numéro « 3 », les CheckBoxList articles seront les suivants:

Bedroom1 
Bedroom2 
Bedroom3 

Le problème que je suis confronté est, puisque tout élément aléatoire peut être supprimés du CheckBoxList, les éléments ne sont pas triés. Par exemple, si je supprime « 2ch », les éléments de la liste seront:

Bedroom1 
Bedroom3 

Et si à nouveau « Chambre » est choisi parmi DropDownList et un numéro est donné par exemple « 2 », les éléments de la CheckBoxList sera être:

Bedroom1 
Bedroom3 
Bedroom1 
Bedroom2 

Ce problème est le même, peu importe que je sélectionner un élément de la DropDownList.

Alors, quelqu'un peut-il m'aider à trier ces articles? Il doit être trié en fonction de chaque emplacement dans le DropDownList.

Répondre

6

Essayez cette

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

J'essayais de le faire moi-même :) –

+0

@Charlie: Désolé cela ne fonctionne pas, pouvez-vous s'il vous plaît me dire la logique de cela et où exactement dans le code devrais-je l'utiliser. En fait, quand je choisis un article de ** DropDownList ** et que j'entre un numéro dans la ** TextBox **, j'utilise ** pour ** boucle en utilisant le numéro donné dans ** TextBox ** et concaténer avec l'élément sélectionné dans le ** DropDownList **, puis ajoutez ces éléments à ** CheckBoxList **. – Archana

+0

** Le code est le suivant: ** 'int q1 = Convert.ToInt16 (TextBox1.Text);' 'pour (int i = 1; i <= q1; i ++)' '{' 'chaîne t1 = DroDownList1.SelectedItem.ToString(). Trim(); ' ' CheckBoxList1.Items.Add (string.Concat (t1, i)); '' CheckBoxList4.Items.Add (DropDownList1.SelectedItem.Text); ''} ' – Archana

0

Vous pouvez ajouter des éléments à ArrayList avant de les ajouter à CheckBoxList. puis trier la liste de tableau, alors donner DataSource à CheckBoxList et 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(); 
    } 

Ceci est d'origine link.

+0

Cela va trier les éléments dans ** DropDownList **, mais je veux trier les éléments dans ** CheckBoxList ** en fonction du nom de l'emplacement differnt. J'espère que ma question est claire. Mais merci d'avoir répondu. Bien vouloir moi m'aider plus loin. – Archana

+0

** Le code est le suivant: ** 'int q1 = Convert.ToInt16 (TextBox1.Text);' 'pour (int i = 1; i <= q1; i ++)' '{' 'chaîne t1 = DroDownList1.SelectedItem.ToString(). Trim(); ' ' CheckBoxList1.Items.Add (string.Concat (t1, i)); '' CheckBoxList4.Items.Add (DropDownList1.SelectedItem.Text); ''} ' – Archana

+0

Peu importe. J'ai édité ma réponse. J'espère que ça va aider. –

Questions connexes