0

データベースから取得したオブジェクトを表示する JQuery プラグインのデータテーブルがあります。各行の最後には「編集」ボタンがあり、クリックすると、ユーザーがオブジェクトを変更できるフィールドを含むポップアップが開きます。

以下のコードは、ポップアップを開く「編集」ボタンです。

<td>@Ajax.ActionLink("Edit",
                                 "controllerMethodReturningEditView",
                                 new
                                 {
                                     Id = @m.Id
                                 },
                                 new AjaxOptions
                                 {
                                     HttpMethod = "GET",
                                     UpdateTargetId = "popupBox",
                                     InsertionMode = InsertionMode.Replace,
                                     OnSuccess = "openPopup('myPopup')"
                                 })</td>

編集ボタンを押したときに呼び出されるコントローラー メソッドは、ポップアップ ボックスに表示される部分的なビューを開くだけです。

return PartialView("editObjectView", objectModel);

この「editObjectView」には、入力用のフィールドを持つフォームが含まれているだけです。

@using(Html.BeginForm(...
           <label>...</label><input ... />
           .... and so on

次に、このポップアップで、ユーザーは表示されたオブジェクトの値を編集できます。ユーザーがポップアップの「保存」ボタンを押すと、新しい値がコントローラー メソッドに送信され、その値が (オブジェクトに) データベースに保存されます。値が保存されると、コントローラー メソッドは、最初のビュー (データ テーブルを表示するビュー) をロードしたコントローラー メソッドを呼び出し、そのメソッドは、新しいオブジェクトまたはオブジェクトへの変更を表示するために、データベースからすべてのオブジェクトを要求します。

ここで質問です。オブジェクトが編集された後にページがリロードされたとき、編集された行のスタイルを変更するにはどうすればよいですか? 最近編集した行の周りに赤い境界線を設定するだけです。ページをリロードするために使用されるすべてのコントローラー メソッドを介してオブジェクトを送信する必要がないようにしたいと考えています。

助けてくれてありがとう、ありがとう!

4

1 に答える 1

1

ページに何が返されているのかわからず、更新したいスタイルがわからない。

各行の css クラスを交互にしたいとしましょう。コンテンツがページに追加された後、次のようなことができます。

$("tr:nth-child(odd)", "#YOUR_TABLE_ID").addClass("odd-row");

または、HTML の各行が一意の ID タグ「...」でフォーマットされていることを確認してから、ページに追加された後に jQuery でクラスを設定します。

リクエストが Ajax リクエストで、json を使用して何かを返す場合 - 次のように:

var json { Id = Table.ID, status = true };

次に、OnSuccess イベントは次のようになります。

function OnSaveSuccess(data) {
    if (data.status) {
        $("#" + data.Id).addClass("highlight-row");
    } else {
    console.warn("save was not successful!");
    }
}
于 2012-07-11T13:44:22.200 に答える