2014-07-03 61 views
0

因此,我的頁面上有一個包含數百個項目的dropDownList。用戶可以通過在文本框中輸入一些文本來過濾此DDL。然後相應地過濾DDL(所有不包含輸入文本的項目都將通過JavaScript刪除)。用戶然後選擇他的項目並按下一個按鈕。通常,這會導致錯誤,因爲DDL已被更改並且ASP驗證PostBack數據。但是,使用EnableEventValidation="false" 可以關閉此行爲,並且頁面可以正確導入。但(這就是我的問題):DDL的SelectedIndex在服務器端始終爲「0」,因此SelectedItem是錯誤的。很顯然,客戶端的變化被駁回。有沒有人有關於如何獲得正確的SelectedItem的想法?或者更好的方法來過濾DDL並保持正確的SelectedItem?Asp.Net:在服務器端恢復DropDownList客戶端SelectedItem

+0

您可以將代碼發佈到您如何加載和操作DDL。通常情況下,回發並不關心你是否操作ddl項目,只要它可以匹配到發佈後的預期有效值服務器端。 – Kelsey

回答

1

當用戶按下一個按鈕時,使用jQuery獲取當前下拉值,並將其設置在頁面上的隱藏字段中,給隱藏的字段runat =「server」,以便當它回發時,您將獲得選定的值。 例如

<asp:DropDownList class="myList"></asp:DropDownList> 
    <asp:Button class="btn"/> 
    <input type="hidden" id="hdnSelectedI" runat="server" class="hiddenControl"> 

    $(document).ready(function(){ 

    $(".btn").click(function(){ 

     var selectedItem = $(".myList").val(); 
     $(".hiddenControl").val(selectedItem); 

    }); 

}); 

我已經使用CLAS名稱選擇作爲ASPNET ID是自動生成的。在服務器端獲得 hdnSelectedItem.Value的值,並從服務器上維護的項目/ db列表中獲取值。

+0

謝謝,這將是一個很好的解決方法。通過嘗試這個解決方案,我發現了一個在我的JS代碼中導致DDL選項丟失值的錯誤 - >回發數據錯誤 - > selectedIndex錯誤。現在沒有解決方法它工作正常。 – Cleo