如何比较下拉指数

时间:2014-01-01 16:05:59

标签: c# asp.net

我需要比较五个下拉列表索引。它除了零索引

之外不应该相同 所有五个下拉列表中的

aspx页面代码相同

<asp:DropDownList ID="DropDownList_l1_5" runat="server" 
                    OnSelectedIndexChanged="DropDownList_l1_5_SelectedIndexChanged" 
                    AutoPostBack="True">
                    <asp:ListItem>Select</asp:ListItem>
                    <asp:ListItem Value="1">Neck</asp:ListItem>
                    <asp:ListItem Value="2">Shoulder</asp:ListItem>
                    <asp:ListItem Value="3">Arm</asp:ListItem>
                    <asp:ListItem Value="4">Lower Back</asp:ListItem>
                    <asp:ListItem Value="5">Leg</asp:ListItem>
                    <asp:ListItem Value="6">Other</asp:ListItem>
                </asp:DropDownList>

我试过下面的代码

    int idx1 = DropDownList_l1_1.SelectedIndex;
    int idx2 = DropDownList_l1_2.SelectedIndex;
    int idx3 = DropDownList_l1_3.SelectedIndex;
    int idx4 = DropDownList_l1_4.SelectedIndex;
    int idx5 = DropDownList_l1_5.SelectedIndex;

    if (idx1 != 0 || idx2 != 0 || idx3 != 0 || idx4 != 0 || idx5 != 0)//this line is probelm
        if (idx1 != idx2 || idx1 != idx3 || idx1 != idx4 || idx1 != idx5)
        {
          // statement
        }

任何想法......

3 个答案:

答案 0 :(得分:2)

应使用&&代替||

检查条件
if(idx1 != 0 && idx2 != 0 && idx3 != 0 && idx4 != 0 && idx5 != 0)
    if( idx1 != idx2 && idx1 != idx3 && idx1 != idx4 && idx1 != idx5 )
    {
        //Statement     
    }

更新:

if(idx1 != 0 && idx2 != 0 && idx3 != 0 && idx4 != 0 && idx5 != 0)
    if( idx1 != idx2 && idx1 != idx3 && idx1 != idx4 && idx1 != idx5 && 
                        idx2 != idx3 && idx2 != idx4 && idx2 != idx5 && 
                                        idx3 != idx4 && idx3 != idx5 && 
                                                        idx4 != idx5 
    )
    {
        // statement
    }

答案 1 :(得分:2)

要确切地说出你要做的事情是很难的。我你说的是:

  • 如果一个或多个下拉列表没有选择(SelectedIndex = 0)
  • ,则没关系
  • 如果一个或多个下拉列表实际上选择,那么它们都不能共享相同的SelectedIndex

如果是这种情况,那么您可以使用如下的简单LINQ语句。它忽略0 (列表中没有选择)的值,然后确保每个索引值(1,2等)只出现一次。

var allIndexes = new List<int>
{
    DropDownList_l1_1.SelectedIndex,
    DropDownList_l1_2.SelectedIndex,
    DropDownList_l1_3.SelectedIndex,
    DropDownList_l1_4.SelectedIndex,
    DropDownList_l1_5.SelectedIndex
};

var noSelectedIndexIsTheSame = allIndexes.Where(x => x != 0)
                                         .GroupBy(x => x)
                                         .All(x => x.Count() == 1);

if (noSelectedIndexIsTheSame)
{
   // no selected values are the same, so do something
   ...
}

答案 2 :(得分:0)

这里的一个大问题是你使用错误的UI隐喻来选择事物。列表中有5个项目,您有5个下拉列表,您希望每个项目最多选择一次。这对程序员来说也很难处理。

我们如何确定是否选择了颈部?

if (idx1 == 1
  || idx2 == 1  
  || idx3 == 1
  || idx4 == 1
  || idx5 == 1) //neck chosen

作为一组复选框

,这不会更好吗?
[x] Neck
[ ] Shoulders
[ ] Arm
[ ] Lower back
[ ] Leg

现在用户只能选择一个项目,而程序员只有一个地方可以检查是否选择了颈部。

if (chkNeck.IsChecked) //neck chosen