2010-12-08 2 views
0

У меня есть страница, содержащая несколько dropdownlists, заполненных одинаковыми значениями. Я хотел бы сравнить их как на стороне клиента, так и на стороне сервера.Сравнение DropDownLists

Проблема заключается в том, что выпадающие списки генерируются динамически, поскольку их количество может меняться.

ответ

0
сторона

Клиент сравнения:

<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#:

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

Какое сравнение вам нужно? Если вы не сохраните их в списке и в этом списке в сеансе, вы никогда не сможете с ними ничего сделать, так как вы добавляете их динамически. Добавьте свои dropdownlists, где вы их создаете (это мне нужно, когда Page.IsPostBack == false) и сохраните этот список в сеансе. На обратной стороне загрузите выпадающие списки из списка. Вы можете сравнить их, используя список, который вы храните.