3

我有一个绑定到普通类对象的 WebGrid。没有什么花哨。Grid 具有一些分页功能,用于显示用户列表。网格的最后一列是一个 Ajax 动作链接,它触发带有一些编辑控件的弹出 DIV。完成此编辑后,OnSuccess 事件将触发并关闭 DIV。这是我现在想刷新网格而不丢失当前页面/搜索/过滤器应用的地方。想到的一种方法是以某种方式获取 WebGrids Url,然后用 JQuery 刷新它,但是.. 我找不到检索当前 url 和参数的方法?以前有人试过吗?

更新:感谢答案,这就是我现在所采用的方法:)

ajax编辑调用的ActionResult

[HttpPost]
public ActionResult EditUserDetails(User model)
{
    if (ModelState.IsValid)
    {
        // for the sake of brevity.

        // do your edit logic here and then on success you return:

        return Json(new { state = "success", id = "1", name = "John", surname = "Doe", etc = "blah" });
    }
    else
    {
        return Json(new { state = "failed", message="some error text here maybe?" });
    }
}

然后在编辑上单击我将行的类设置为 .editRowSelected。(我会将其更改为 id)

然后是 Ajax 更新调用的 onSuccess:

function onSuccess(ajaxContext) {
    var result = eval(ajaxContext);
    if (result.state == "Success") {

        var row = $('.busyEditRow');
        row.html(content);

        $('.busyEditRow').removeClass('busyEditRow');
    }
    else {
        // Display some error stuffs here with the message - result.message
    }
}

这将使用新数据更新网格行:)

4

1 回答 1

1

刚刚编辑了一条记录,而不是刷新整个网格,然后必须回发应用的过滤器、当前页面等,我将在我的控制器中有一个函数,它返回一个包含单个用户数据的局部视图。

您可以在 DIV 关闭后通过 AJAX 调用它,并使用 jQuery 将网格中的行替换为函数返回的 HTML。

只要网格中的每一行都可以通过 id 识别,就应该足够简单地找到相关行并替换它。

于 2012-07-04T15:31:46.393 回答