0

私は2つのドロップダウンリストを持っています。最初のドロップダウンを変更すると、次のjQueryコードによって2番目のドロップダウンが選択されたインデックス0にリセットされます。

    $("select[id*='ddlWayType']").bind("change", function () {
        $("select[id*='ddlVehicle']").val("Select");
    });

私の seconddropdown には AutoPostBack="true" と SelectedIndexChange イベントがあります。私の問題は、リセット後です。2 番目のドロップダウンから項目を選択すると、リクエストはサーバーに正常に送信されますが、2 番目のドロップダウンの selectedindexchange イベントは発生しません。これは、jquery によって 2 番目の DropDown の選択されたインデックスをリセットしない場合に通常発生します。

4

1 に答える 1

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>
于 2013-05-29T07:10:36.873 に答える