【发布时间】:2012-07-05 01:39:00
【问题描述】:
我有一个绑定到普通类对象的 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
}
}
这将使用新数据更新网格行:)
【问题讨论】:
-
您只想更新网格中已编辑的一行?将新数据发送到服务器并在弹出关闭时从 javascript 手动更新此行
-
谢谢丹尼斯。我会将行标记为选中,以便在 Success 事件中获取它。标准的 WebGrid Helper 缺乏对添加行 ID 的支持,这在 imo 中有点愚蠢。
标签: c# jquery ajax asp.net-mvc-3 webgrid