我有一个绑定到Plain Class Object的WebGrid。没有什么花哨。网格具有一些分页功能,用于显示用户列表。 Grid的Last列是一个Ajax Action Link,它使用一些Edit控件触发Pop Up 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而不是)
然后onSuccess的Ajax更新调用:
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
}
}
这将使用新数据更新网格行:)
答案 0 :(得分:1)
刚刚编辑了一条记录,而不是刷新整个网格,然后必须回发应用的过滤器,当前页面等,我的控制器中会有一个函数返回包含单个用户数据的局部视图。
你可以在DIV关闭后通过AJAX调用它,并使用jQuery用从函数返回的HTML替换网格中的行。
只要网格中的每一行都可以通过id识别,它就足够简单,可以找到相关的行并替换它。