[英]Determining the index of a list based on another list and vice versa, solutions in C#/VB.NET or JavaScript are welcome
假設您有列表1(ilist1)和列表2(ilist2),兩個列表都有3個項目。
在索引0 item1有文本“ - 選擇 - ”在索引1 item2有文本“是”在索引2 item3有文本“否”
兩個列表都有相同的項目。 我想知道是否可以選擇列表一為“是”,列表二的選擇為“否”,反之亦然,使用SelectedIndexChanged或類似的東西。
例如:ilist1 = --Select-- ilist2 = --Select--
用戶將ilist1更改為No:ilist1 = No ilist2 = Yes(可以在更改索引時完成)
現在,如果用戶在ilist2上選擇“否”,則ilist1將在沒有用戶干預的情況下更改為“是”現在是ilist: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;
}
}
如果可能,請告訴我,謝謝你們
一個簡單的解決方案是在else中添加一個額外的條件,如果它已經正確則不改變索引:
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;
}
}
將提供配方和排序的偽代碼:
在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; } }
上述代碼可能不正確,只要按照您希望的方式設置選擇即可; 需要注意的重要事項是使用FindByValue
和Selected=true
。 如果列表中項目的索引由於某種原因而發生變化; 您不必修改代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.