0

我有两个下拉列表。如果第一个有选择,我需要在第二个中进行选择。

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>
4

3 回答 3

1

从您的评论中更新,再次更新..

这就是为什么我最初用 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 ((ddl1.SelectedIndex > 0 )  && (ddl2.SelectedIndex == 0)) {
     this.lblError.Visible = true;
}

试试这个进行故障排除 - 在 if 语句之前

 this.lblError.Visible = true;
 this.lblError.Text = "ddl1 : " + ddl1.SelectedIndex.ToString() + " ddl2 : " + ddl2.SelectedIndex.ToString();
于 2012-09-26T19:24:38.887 回答
1
if((ddl1.SelectedIndex > -1 ) && !(ddl2.SelectedIndex > -1))
{
    this.lblError.Visible = true;
}

这几乎只是对您所说的内容的翻译,“是第一个中的选择,而不是第二个中的选择”其中第一个具有值(大于-1)第二个没有一个值。

您可以通过多种方式对其进行重构,例如使用ddl2.SelectedIndex == -1第二个值,但是这段代码的读取方式与您描述的它应该如何工作完全一样,而且它确实没有任何问题,所以这很值得我的眼睛。

于 2012-09-26T19:27:30.227 回答
0

你可以这样做

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

C#

if((ddl1.SelectedValue.Length > 0 ) && (ddl2.SelectedValue.Length == 0))
{
    this.lblError.Visible = true;
}
于 2012-09-26T20:36:30.217 回答