簡體   English   中英

根據另一個列表確定列表的索引,反之亦然,歡迎使用C#/ VB.NET或JavaScript中的解決方案

[英]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;
    }
}

將提供配方和排序的偽代碼:

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

上述代碼可能不正確,只要按照您希望的方式設置選擇即可; 需要注意的重要事項是使用FindByValueSelected=true 如果列表中項目的索引由於某種原因而發生變化; 您不必修改代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM