0

ASP.NETMVC3を使用したソリューションがあります。ユーザーを管理(作成/編集/削除)できるページがあります。このページにページングがあります。

ここに画像の説明を入力してください

編集ボタンを押すと、編集可能なダイアログが表示されます。

ここに画像の説明を入力してください

ユーザーが保存ボタンをクリックすると、ダイアログが非表示になり、リストがajaxを介して更新されます。

この問題は、ユーザーが2ページまたは3ページの項目を編集したときに発生しました。この場合、1ページが表示されます。その理由は、現在のページ情報が私のアクションのコントローラーで認識されていないためです。現在アクティブなページを表示したままにします。

これが私が持っている解決策ですが、完全には満足していません:

編集ボタンには、以下のActionLinkがあります。

@Html.ActionLink("Editer", "Edit", new { userID = item.UserID }, new { userID = item.UserID, page = Model.PageNumber, @class = "btn small editUser" }) 

アンカーリンクにページ番号を挿入します。次に、ダイアログが表示されます。次のユーザーは[保存(送信)]をクリックします。送信アクションがトリガーされ、ページ番号が次のように投稿パラメーターに挿入されます。

$('form', dialog).submit(function () {
    $.post($(this).attr('action'), $(this).serialize() + '&page=2', function (data, status) {
            $('#my-modal').modal('hide');
            $("#userList").html(data);
    })
});

ご覧のとおり、テスト目的で「&page=2」を手動で追加しました。コントローラのアクションは、投稿されたデータ(編集されたアイテム+ページ番号)を受け取り、リポジトリを更新してから、RedirectToAction( "List"、new {page = page})が正しいページのリストを更新します。

私はこの解決策が好きではありません。もっと良い方法があるはずですよね?

誰かがこれについて私を助けることができるならば、前もって感謝します。

4

2 に答える 2

0

グリッド全体を返す代わりに、行を新しいデータで更新するだけです。検索/編集ページでこれを行います。ユーザーが行をクリックすると、その行のインデックスが JavaScript に保存されます。編集が成功したら、テキスト ボックスの値で行を更新します。

于 2012-04-06T12:42:34.330 に答える
0

ページを更新せずに更新できる完全な「Ajax グリッド」がある場合でも、ページをリロードする必要がある「サーバー側」グリッドがある場合でも、ソリューションは問題ありません。

于 2012-04-06T12:31:09.797 に答える