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 回答