我有两个下拉列表。当我更改第一个下拉列表时,第二个下载将通过以下jQuery代码重置为选定的索引0。
$("select[id*='ddlWayType']").bind("change", function () {
$("select[id*='ddlVehicle']").val("Select");
});
我的第二次下载有AutoPostBack =“true”和SelectedIndexChange事件。 我的问题是在重新设置之后,当我从第二个下拉列表中选择项目时,一个请求正常消失到服务器但是第二个下拉列表的selectedindexchange事件没有被触发。当我们没有通过jquery重置第二个DropDown的选定索引时,会正常触发。
答案 0 :(得分:1)
您正在将服务器端状态与客户端状态混合。在客户端进行的更改不会在视图状态/控件状态中进行更改。因此,如果您为ddlVehicle
下拉列表选择了默认选定值以外的任何值,它将调用在服务器端注册的ddlVehicle_SelectedIndexChanged
。我也在最后验证过。
您可以通过添加Web方法/ ajax来实现此目的,并在客户端更改时执行相同的操作。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
jQuery(function ($) {
$("select[id*='ddlWayType']").bind("change", function () {
$("select[id*='ddlVehicle']").val("Select");
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddlWayType" runat="server">
<asp:ListItem Text="Select" Value="Select"></asp:ListItem>
<asp:ListItem Text="Select1" Value="Select1"></asp:ListItem>
<asp:ListItem Text="Select2" Value="Select2"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ddlVehicle" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlVehicle_SelectedIndexChanged">
<asp:ListItem Text="Select" Value="Select"></asp:ListItem>
<asp:ListItem Text="Select1" Value="Select1"></asp:ListItem>
<asp:ListItem Text="Select2" Value="Select2"></asp:ListItem>
</asp:DropDownList>
</div>
</form>
</body>
</html>