基于另一个列表确定列表的索引,反之亦然,欢迎使用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;
}
}
如果可能的话,请告诉我,谢谢大家
将提供配方和伪代码的排序:
- 在两个列表上都设置AutoPostBack=true
-
在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;
}
}