Asp.Net:在服务器端恢复DropDownList的客户端SelectedItem

时间:2014-07-03 15:56:44

标签: c# javascript asp.net drop-down-menu postback

所以我的页面上有一个包含数百个项目的dropDownList。用户可以通过在文本框中键入一些文本来过滤此DDL。然后相应地过滤DDL(通过JavaScript删除所有不包含输入文本的项目)。然后用户选择他的项目并按下按钮。通常,这会导致错误,因为DDL已被更改并且ASP验证了PostBack数据。但是,使用EnableEventValidation="false" 您可以关闭此行为,并正确地提交页面。但是(这就是我的问题):DDL的SelectedIndex在服务器端始终为“0”,因此SelectedItem是错误的。很明显,客户端的变化被驳回了。有没有人知道如何获得正确的SelectedItem?或者更好的方法来过滤DDL并维护正确的SelectedItem?

1 个答案:

答案 0 :(得分: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,以及来自服务器上维护的项目/数据库列表的拉取。