C# 比较两个下拉列表值,如果在其中一个值中进行了选择,但在另一个值中未进行选择,则会引发错误
我有两个下拉列表。我需要在第二个选择,如果有在第一个选择C# 比较两个下拉列表值,如果在其中一个值中进行了选择,但在另一个值中未进行选择,则会引发错误,c#,asp.net,C#,Asp.net,我有两个下拉列表。我需要在第二个选择,如果有在第一个选择 if((ddl1.SelectedIndex > -1 ) != (ddl2.SelectedIndex > -1)) { this.lblError.Visible = true; } 因此,基本上,如果第一个选项中有选择,但第二个选项中没有选择,则会出现错误 它会是下拉菜单吗?它是自己的 <asp:DropDownList ID="ddlRate1" runat="server">
if((ddl1.SelectedIndex > -1 ) != (ddl2.SelectedIndex > -1))
{
this.lblError.Visible = true;
}
因此,基本上,如果第一个选项中有选择,但第二个选项中没有选择,则会出现错误
它会是下拉菜单吗?它是自己的
<asp:DropDownList ID="ddlRate1" runat="server">
<asp:ListItem Value="">(Select)</asp:ListItem>
<asp:ListItem>Initial</asp:ListItem>
<asp:ListItem>Moderate</asp:ListItem>
</asp:DropDownList>
根据您的评论更新,再次更新 这就是为什么我最初用2个if语句编写它
if((ddl1.SelectedIndex > 0 ) {
//code to read value from ddl1
if (ddl2.SelectedIndex == 0))
{
this.lblError.Visible = true;
// or maybe a bool 'IsValid' maybe..
}
}
然后假设整个表单中都有这样的代码,最后您可以
if ( this.lblError.Visible == true) { // code to handle invalid form }
或者
在if语句之前,尝试此方法解决问题
this.lblError.Visible = true;
this.lblError.Text = "ddl1 : " + ddl1.SelectedIndex.ToString() + " ddl2 : " + ddl2.SelectedIndex.ToString();
这几乎只是你所说的翻译,是第一个选项,而不是第二个选项,第一个选项的值大于-1,第二个选项的值不大于-1
您可以通过多种方式重构它,例如使用ddl2.SelectedIndex==-1作为第二个值,但这段代码的内容与您描述的应该如何工作完全相同,而且它确实没有任何问题,因此在我看来这很有价值。您可以这样做
<asp:DropDownList ID="ddl1" runat="server">
<asp:ListItem Value="">(Select)</asp:ListItem>
<asp:ListItem Value="Initial">Initial</asp:ListItem>
<asp:ListItem Value="Moderate">Moderate</asp:ListItem>
</asp:DropDownList>
改为使用&&怎么样?这不起作用。下拉列表本身可能是问题所在吗?错误标签不可见,只会移动到下一个方法调用。对不起,我无意含糊其辞。它只是像if语句不存在一样运行。@briskovich你在用IE调试吗?这就是我得到的。ddl1:2 ddl2:0,所以ddl2应该在-1上,ddl1应该在-1上开始。这不起作用。我似乎没有评估第二个框。可能是下拉菜单本身吗?你说的“不工作”是什么意思。什么是不应该发生的,或者什么是不应该发生的?错误标签不可见,它只是移动到下一个方法调用。@briskovich以及当时每个下拉列表的选定索引是什么?另外,您在哪里调用代码?您意识到它与c if语句中的ID不同吗?
if((ddl1.SelectedIndex > -1 ) && !(ddl2.SelectedIndex > -1))
{
this.lblError.Visible = true;
}
<asp:DropDownList ID="ddl1" runat="server">
<asp:ListItem Value="">(Select)</asp:ListItem>
<asp:ListItem Value="Initial">Initial</asp:ListItem>
<asp:ListItem Value="Moderate">Moderate</asp:ListItem>
</asp:DropDownList>
if((ddl1.SelectedValue.Length > 0 ) && (ddl2.SelectedValue.Length == 0))
{
this.lblError.Visible = true;
}