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的更好方法?
当用户按下按钮时,使用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列表中提取。