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