PMedlem sedan jan. 20012 204 inlägg Har 6 st dropdown, vill kolla så att de inte innehåller samma värde. Hur skiver man bäst? Detta vill inte funka:
If (dd1.SelectedItem.Value <> dd2.SelectedItem.Value <> ddl3.SelectedItem.Value <> ddl4.SelectedItem.Value <> ddl5.SelectedItem.Value) Then
DinoMedlem sedan sep. 20011 914 inlägg Nedan är ett alternativ, blir ju förstås en del kontroller.
'block 1
<asp:DropDownList ID="ddl1" Runat="server">
<asp:ListItem text="One"/>
<asp:ListItem text="Two"/>
<asp:ListItem text="Three"/>
<asp:ListItem text="Four"/>
</asp:DropDownList>
<asp:CompareValidator ID="Comparevalidator1" ControlToValidate="ddl1" ControlToCompare="ddl2" ErrorMessage="2" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator2" ControlToValidate="ddl1" ControlToCompare="ddl3" ErrorMessage="3" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator3" ControlToValidate="ddl1" ControlToCompare="ddl4" ErrorMessage="4" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator4" ControlToValidate="ddl1" ControlToCompare="ddl5" ErrorMessage="5" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator5" ControlToValidate="ddl1" ControlToCompare="ddl6" ErrorMessage="6" Operator="NotEqual" Runat="server"/>
'block2
<asp:DropDownList ID="ddl2" Runat="server">
<asp:ListItem text="One"/>
<asp:ListItem text="Two"/>
<asp:ListItem text="Three"/>
<asp:ListItem text="Four"/>
</asp:DropDownList>
<asp:CompareValidator ID="Comparevalidator6" ControlToValidate="ddl2" ControlToCompare="ddl1" ErrorMessage="1" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator7" ControlToValidate="ddl2" ControlToCompare="ddl3" ErrorMessage="3" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator8" ControlToValidate="ddl2" ControlToCompare="ddl4" ErrorMessage="4" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator9" ControlToValidate="ddl2" ControlToCompare="ddl5" ErrorMessage="5" Operator="NotEqual" Runat="server"/>
<asp:CompareValidator ID="Comparevalidator10" ControlToValidate="ddl2" ControlToCompare="ddl6" ErrorMessage="6" Operator="NotEqual" Runat="server"/>
'sen ytterliggare 4 block
PMedlem sedan jan. 20012 204 inlägg Ohh massa kontroller! Ingen som har något exempel med:
for each dropdown in page.controls
loopa genom alla etc
GladhMedlem sedan maj 20012 812 inlägg Jag hade nog tatt och skapat mig en hashtable och använd dropdownlistans värde som nyckel och sedan satt in ett fiktivt värde i hashtablen.
Du får nämligen inte har 2 likadana nycklar i en hashtabel, då får du ett fel. typ något sånt här:
HashTable myTable = new HashTable();
try{
myTable.Add(ddl1.SelectedItem.value,true);
myTable.Add(ddl2.SelectedItem.value,true);
myTable.Add(ddl3.SelectedItem.value,true);
myTable.Add(ddl4.SelectedItem.value,true);
myTable.Add(ddl5.SelectedItem.value,true);
myTable.Add(ddl6.SelectedItem.value,true);
}catch(Exception e){
//-- två eller flerar dropdowlistar har samma värde... FEL
}
Något sånt, läs på om HashTable så får du mer info.
- Magnus
PMedlem sedan jan. 20012 204 inlägg En lösning i c#
string[] values = new string[6];
bool hasError = false;
for (int i=1; i<=6; i++)
{
DropDownList ddl = (DropDownList) Page.FindControl("dd" + i.ToString());
string value = ddl.SelectedItem.Value;
if (Array.IndexOf(values, value) == -1) values[i-1]= value;
else
{
hasError = true;
break;
}
}
if (hasError)
{
// do stuff
}