簡體   English   中英

Asp.net MVC WebGrid中第2頁的URL

[英]URL of Page 2 in Asp.net MVC WebGrid

我正在使用Asp.Net MVC WebGrid。 我的網格通過Partial View的Ajax調用出現。 因此,分頁不起作用。 每當我單擊第二頁時,整個頁面都會刷新,並且網址變為

    http://localhost:2429/mvc/SSP/Home/SearchQuery?page=2

顯然沒有找到(404)。 我認為Webgrid分頁不適用於部分視圖。 因此,我決定在每個頁面鏈接上進行一個jquery ajax調用。為此,我需要一個可以從Webgrid提取第二頁數據的URL。

因此,有沒有辦法找到webgrid第二頁的網址,以便我可以從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"] }))

參考: 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,然后使用該頁碼來抓取並返回與該頁碼相關的數據集(即list.skip(pagesize * pagenumber).take(pagesize) )。 希望這可以幫助。

如果查看網絡網格的生成方式,則會注意到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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM