【问题标题】:How to persist sorting and paging in ASP.NET MVC WebGrid when updating via ajax?通过 ajax 更新时如何在 ASP.NET MVC WebGrid 中保持排序和分页?
【发布时间】:2014-12-04 19:45:35
【问题描述】:
当使用 ASP.NET WebGrid 分页和排序时,通过将特定的查询字符串附加到包含名称和值的 url,其中包含说明页码、排序方向等的名称和值。
但是,当使用 ajaxUpdateId 属性能够异步更新 WebGrid 时,
当单击页脚中的页面或单击标题以对列进行排序时,它可以正常工作,但查询字符串不再附加到 url,它在刷新浏览器页面后不会持续分页和排序。
有没有办法在通过 ajax 更新 WebGrid 时保持排序和分页值?
非常感谢您提供任何有用的建议
【问题讨论】:
标签:
asp.net
sorting
paging
webgrid
【解决方案1】:
我想我找到了解决方案。也许它并不完美,但它确实有效。我花了很多时间试图弄清楚 WebGrid 在通过 ajax 更新时是如何工作的,但是所有这些功能都是隐藏的。
因此,如果您需要在刷新页面时继续进行排序和分页,则每次更改页面或排序时都必须更新 url。 WebGrid 通过 url 中的查询字符串记住它。
因此,我向 WebGrid 中的所有链接添加了一个 jquery 单击事件,并使用 history.pushState 函数保存单击的 url,然后刷新页面(您需要这样做,因为它仅适用于一次更改,因为 ajax 不会更改 url )
<script type="text/javascript">
$("#gridContainderID a").click(function () {
history.pushState(null, null, this.href);
location.reload();
});
</script>
【解决方案2】:
我已经能够使用以下代码做到这一点:
(注意返回 false!)
$('#gridContent tfoot a[href]').click(function () {
history.replaceState({}, null, this.href);
return false;
});