簡體   English   中英

如何在列表框中顯示多個選定的項目

[英]How to show multiple selected items in an ListBox

我有一個列表框,您可以在其中選擇多個項目,並將它們保存到數據庫中。 一切正常,但是當我回到列表框查看項目時,即使我選擇了3,也只選擇了第一個。

列表框:

<asp:ListBox runat="server" SelectionMode="Multiple" ID="txtEdtContactDocuments"></asp:ListBox>

碼:

for (var i = 0; i < document.getElementById('<%= txtEdtContactDocuments.ClientID %>').length; i++) {
  for (var x=0;x<result.Docs.length;x++) {
        if (Number(document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].value) == Number(result.Docs[x].DocType)) {
              document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "selected";
              } else {
                 document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "";
                 document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = false;
              }
        }
  }

循環看起來正確,它確實找到了我選擇的3個項目,但是它們在列表中沒有突出顯示:

在此處輸入圖片說明

我也嘗試了document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = true; 但這改變了一切。 仍然只有第一個項目被選中。

這是一個算法問題。 假設result.Docs集合中有多個項目,您將覆蓋for (var x=0;x<result.Docs.length;x++)循環的早期迭代中可能設置的內容。

如果您放了break;您的算法應該可以工作break; 這行之后的語句: document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "selected"; 找到適當的項目后,它將終止內部循環。

但是,我建議重構代碼並完全擺脫內部循環。 例如,您可以將其替換為LINQ查詢。

注意:無需使用jQuery或任何其他JS框架。 您可以使用原始JavaScript輕松完成任務: https : //jsfiddle.net/hjybjz3e/

嘗試使用jQuery設置所選選項。

更換

document.getElementById('<%= txtEdtContactDocuments.ClientID %>')[i].selected = "selected";

帶有:

$('#<%= txtEdtContactDocuments.ClientID %>').eq(i).attr("selected", "true");

.eq()是一個jQuery函數,用於使用[]表示法在相同的索引處選擇對象。

暫無
暫無

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

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