Asp.net MVC WebGrid中第2页的URL
本文关键字:2页 URL 中第 WebGrid net MVC Asp | 更新日期: 2023-09-27 18:18:00
我正在与Asp合作。Net MVC WebGrid。我的网格是通过局部视图的ajax调用出现的。因此分页不起作用。每当我点击第二页,整个页面刷新,url变成
http://localhost:2429/mvc/SSP/Home/SearchQuery?page=2
显然没有找到(404)。我认为Webgrid分页不适用于局部视图。因此,我决定对每个页面链接进行jquery ajax调用。为此,我需要一个url,可以从Webgrid中提取第二页的数据。
那么,有没有办法找到webgrid第二页的url,以便我可以从webgrid中提取数据并显示在第二页上
我想你需要这个,
对于分页,您可以使用MVC4.Paging。
@Html.Raw(Ajax.Pager(
new Options
{
PageSize = Model.PageSize,
TotalItemCount = Model.TotalItemCount,
CurrentPage = Model.PageNumber,
ItemTexts = new ItemTexts() { Next = "Next", Previous = "Previous", Page = "P" },
ItemIcon = new ItemIcon() { First = "icon-backward", Previous = "icon-chevron-left", Next = "icon-chevron-right", Last = "icon-forward" },
TooltipTitles = new TooltipTitles() { Next = "Next page", Previous = "Previous page", Page = "Go to page {0}.", First = "Go To First Page", Last = "Go To Last Page" },
Size = Size.normal,
Alignment = Alignment.centered,
IsShowControls = true,
IsShowFirstLast = true
},
new AjaxOptions
{
UpdateTargetId = "grid-list",
OnBegin = "beginPaging",
OnSuccess = "successPaging",
OnFailure = "failurePaging"
}, new { controller = "Home", action = "Index", employee_name = ViewData["employee_name"] }))
ref: http://mvcpaging.apphb.com/
我已经实现了&它的工作原理!
在示例中提到了不回发的分页。
安装完nuGet包后,
当你把你的模型传递回View或PartialView时,你需要使用ToPagedList
来转换它
myModel = myModel.ToPagedList(currentPageIndex,rowSize);
上面的代码会为你创造奇迹!
但是如果您想在AJAX调用后更改URL,则需要付出更多的额外努力。
ref:如何改变一个ajax请求后的URL ?
还必须使用基于Ajax的分页来设计网格。现在您正在为分页呈现锚标记,这将导致整个页面加载。
有网格控件支持这个开箱即用。一个很好的例子是Telerik Kendo网格
这篇文章可能会对你有所帮助
http://msdn.microsoft.com/en-us/magazine/hh288075.aspx这并不像将页码传递给网格那么简单,您需要将PageSize和PageNumber存储为模型的一部分。然后从视图中调用Bind方法。
个人在过去,我已经创建了我自己的分页助手,所以在控制器你传入(PageSize, TotalCount, CurrentPage),并从这你带回你的数据的一个子集。这也可以防止控制器先返回所有数据,然后对其进行分页,这对于大数据集来说不是很有效。
编辑
我找到的另一篇文章解释了我上面所说的(第二部分)。
http://www.dotnetcurry.com/ShowArticle.aspx?ID=615当你使用MVC WebGrid时,没有数据的自动分页。您在webgrid中看到的分页用于自定义分页,这意味着您必须自己处理它。webgrid所做的只是将一个页码作为参数发送给actionresult,然后使用该页码抓取并返回与该页码相关的数据集(即列表)。Skip (pagesize * pagenumber).take(pagesize))。
如果你看看webgrid是如何生成的,你会注意到grid.GetHtml
返回一个IHtmlString
。
你可以把它转换成一个字符串并替换你想替换的任何东西。在您的示例中,您希望替换分页url。
var html = grid.GetHtml(...).ToHtmlString().Replace("home/index?page", "home/MyPartialGrid?page");
然后您可以创建MvcHtmlString
的新实例来生成网格。
var htmlString = new MvcHtmlString(html);
<div id="myPartialGrid">
@htmlString
</div>