2010-12-08 4 views
0

J'ai une page qui contient plusieurs listes déroulantes, toutes remplies avec les mêmes valeurs. Je voudrais les comparer sur le client ainsi que sur le serveur.Comparer DropDownLists

Le problème est cependant que les listes déroulantes sont générées dynamiquement parce que leur quantité peut varier.

Répondre

0

côté client comparant:

<script type="text/javascript"> 
     function CompareSelectedValues(dropDown1ID, dropDown2ID) { 
      var DropDownList1 = document.getElementById(dropDown1ID); 
      var DropDownList2 = document.getElementById(dropDown2ID); 
      if (DropDownList1.selectedIndex != -1 && DropDownList2.selectedIndex != -1) { 
       if (DropDownList1.options[DropDownList1.selectedIndex].value != DropDownList2.options[DropDownList2.selectedIndex].value) 
        alert('not same'); 
      } 
     } 
    </script> 




côté serveur classique à comparer avec C#:

private bool AreDropDownListValuesEqual(DropDownList ddlist1, DropDownList ddlist2) 
    { 
     // Check for invalid input or different number of items for early return 
     if (ddlist1 == null || ddlist2 == null || ddlist1.Items.Count != ddlist2.Items.Count) 
     { 
      return false; 
     } 

     // Check items one by one. We need a nested loop because the list could be sorted differently while having the same values! 
     foreach (ListItem outerItem in ddlist1.Items) 
     { 
      bool hasMatch = false; 
      foreach (ListItem innerItem in ddlist2.Items) 
      { 
       if (innerItem.Value == outerItem.Value && innerItem.Text == outerItem.Text) 
       { 
        hasMatch = true; 
        break; 
       } 
      } 

      if (!hasMatch) 
      { 
       return false; 
      } 
     } 

     // All items from ddlist1 had a match in ddlist2 and we know that the number of items is equal, so the 2 dropdownlist are matching! 
     return true; 
    } 
0

De quel type de comparaison avez-vous besoin? Si vous ne les gardez pas dans une liste et cette liste dans Session, vous ne pouvez jamais rien faire avec eux puisque vous les ajoutez dynamiquement. Ajoutez vos listes déroulantes à l'endroit où vous les créez (cela devrait être le cas lorsque Page.IsPostBack == false) et conservez cette liste en session. Sur les publications, chargez vos listes déroulantes dans la liste. Vous pouvez les comparer en utilisant la liste que vous gardez.