基于另一个列表确定列表的索引,反之亦然,欢迎使用C#/VB.NET或JavaScript中的解决方案

本文关键字:列表 VB NET 解决方案 JavaScript 另一个 索引 反之亦然 | 更新日期: 2023-09-27 18:19:49

假设您有列表1(ilist1)和列表2(ilist2),这两个列表都有3项。

在索引0处,项1具有文本"--选择--"在索引1项2中,文本为"是"在索引2第3项,其文本为"否"

两个列表都有相同的项目。我想知道是否可以使用SelectedIndexChanged或类似的东西来选择列表一为"是",列表二为"否",反之亦然。

例如:ilist1=--选择--ilist2=--选择--

用户将ilist1更改为否:ilist1=否ilist2=是(可以在索引更改时执行)

现在,如果用户在ilist2上选择"否",则ilist1将在没有用户干预的情况下更改为"是",因此ilists现在:ilist1=是ilist2=无

在其他方面,我希望能够对这两个列表执行以下操作,而不必运行到无限循环中(我希望列表在用户停止选择时停止更改索引)。

protected void IndexChanged(object sender, EventArgs e)
{
    ilist1 = (DropDownList)sender;
    if (ilist1.SelectedIndex == 0) { }
    else if (ilist1.SelectedIndex == 1) {
        ilist2.SelectedIndex = 2;
    }
    else if (ilist1.SelectedIndex == 2){
        ilist2.SelectedIndex = 1;
    }
}

如果可能的话,请告诉我,谢谢大家

基于另一个列表确定列表的索引,反之亦然,欢迎使用C#/VB.NET或JavaScript中的解决方案

将提供配方和伪代码的排序:

  1. 在两个列表上都设置AutoPostBack=true
  2. 在SelectedIndexChanged上执行以下操作:

    protected void IndexChanged(object sender, EventArgs e) 
    { 
      DropDownList theList = (DropDownList)sender; 
      if(theList.ID=="Id of list 1") 
      {
         if(theList.SelectedValue=="No") 
            list2.Items.FindByValue("Yes").Selected=true;
      }
      else //list2 fired the indexchanged event
      {
           if(theList.SelectedValue=="Yes") 
            list1.Items.FindByValue("No").Selected=true;
      }
    } 
    

上面的代码可能不适合按照您想要的方式设置选择;需要注意的是CCD_ 1和CCD_。如果列表中项目的索引由于某种原因而发生更改;您不必修改代码。

一个简单的解决方案是在else-if中添加一个额外的条件。如果索引已经正确,则不更改索引:

protected void IndexChanged(object sender, EventArgs e)
{
    ilist1 = (DropDownList)sender;
    if (ilist1.SelectedIndex == 0) { }
    else if (ilist1.SelectedIndex == 1 && ilist2.SelectedIndex != 2) {
        ilist2.SelectedIndex = 2;
    }
    else if (ilist1.SelectedIndex == 2 && ilist2.SelectedIndex != 1){
        ilist2.SelectedIndex = 1;
    }
}