Asp.在服务器端恢复下拉列表的客户端SelectedItem

本文关键字:客户端 SelectedItem 下拉列表 恢复 服务器端 Asp | 更新日期: 2023-09-27 18:11:15

所以我的页面上有一个包含数百个项目的下拉列表。用户可以通过在文本框中输入一些文本来过滤这个DDL。然后对DDL进行相应的过滤(通过JavaScript删除不包含输入文本的所有项)。然后用户选择他的物品并按下按钮。通常,这将导致错误,因为DDL已被更改,ASP将验证PostBack数据。然而,对于EnableEventValidation="false"您可以关闭此行为,页面将被正确提交。但是(这是我的问题):DDL的SelectedIndex在服务器端总是"0",因此SelectedItem是错误的。因此,很明显,客户端的变化被忽略了。有人知道如何得到正确的SelectedItem吗?还是过滤DDL并维护正确的SelectedItem的更好方法?

Asp.在服务器端恢复下拉列表的客户端SelectedItem

当用户按下按钮时,使用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);  
    });
});

我使用了类名选择器,因为在aspnet中id是自动生成的。在服务器端得到的值hdnSelectedItem.Value,并从服务器上维护的项目/db列表中提取。