0

長い説明ですが、これはかなり単純な質問だと思います。ここで何かが足りないと思います。

ドロップダウン メニューからユーザー ロールを選択した後、そのロールのユーザーを含む部分ビューを ajax を使用して DIV に読み込みます。

        $.ajax({
        type: 'post',
        data: { id: roleId},
        url: '@Url.Action("Manage","User")',
        success: function (data) {
            $("#user-manage").html(data);
        }
    });

現在、ページには、ユーザーのリストと [削除] ボタンを含むコンボボックスがあります。ユーザーを強調表示して [削除] ボタンを押すと、ユーザーが削除されます。

すごい!それは機能しますが、私の問題は、ページが更新されるまで、削除されたユーザーがコンボボックスリストから消えないことです。また、ページを更新できません。これは、Web サイトのユーザーがロールの選択からやり直す必要があることを意味するためです。

それで、質問は、その削除ボタンを押すとすぐにコンボボックスでユーザーを非表示にするにはどうすればよいですか?

現在、削除ボタンが押されると、選択された UserId が、選択されたユーザーを削除し、更新された JSON ユーザー リストを返す次の ajax 呼び出しに渡されます。

    function removeUser() {
    var selectedUser = $("#user-combo").find(":selected").val(); //grab selected user
    var selectedForRole = $("#role-id").val(); //hidden field to store selected role

    $.ajax({
        url:"/User/Delete", //Delete selected user and return updated Json list
        data: { id: selectedUser , roleId: selectedForRole },
        type: 'post',
        success: function (data) {
            var userList = $("#user-combo");
            var listContent;

            $.each(data, function (index, item) {
                listContent += "<option value='" + item.Id + "'>" + item.Name + "</option>";
            });

            userList.html(listContent);
        }
    });
}    

機能的にこれは機能します。ユーザーは削除されますが、画面を更新するまで $("#user-combo") ボックスに反映されません。

location.reload(); Web サイトのユーザーが役割を選択して更新されたユーザーのリストを表示することを望まないため、私にはうまくいきません。

これをインタラクティブにするにはどうすればよいですか?ユーザーを削除すると消え、後で追加すると表示されますか?

前もって感謝します。

編集。コンボボックスに返された Json オブジェクト:

return Json(roleUsers.Select(x => new
            {
                Id = x.Id,
                Name = x.Name
            }));
4

2 に答える 2

0

コールバック関数を確認してください。ロジックはOKのようです。私はテストしたばかりで、select の html を置き換えると、古いアイテムが削除され、新しいアイテムが追加されます。これはそのためのフィドルです

成功のコールバック関数にいくつかの console.log() 呼び出しを追加します。console.log(データ); console.log(ユーザーリスト); console.log(listContent) を調べて、それらに正しいデータが含まれているかどうかを確認します...またはそれらがまったく実行されるかどうか。

別の考えられる原因については、サーバーの roleUsers リストを確認してください。削除されたユーザーが含まれている可能性があります。つまり、データベースからではなくキャッシュから引き出した場合、またはリストの読み込み後に削除した場合です。

于 2012-05-31T23:03:17.610 に答える
0

これは次のように簡単です。

$("#comboBox option[value='USER-NAME']").remove();

これをあなたの中に入れてくださいremoveUser()。関数。

実際、この関数はリモート リストからユーザーを削除するだけでなく、DOM からもユーザーを削除する必要があります。この助けを願っています。

于 2012-05-31T19:47:00.530 に答える