2009-07-30 35 views
0

我正在使用示例martijn Boland's進行頁面。如何在MVC應用程序中進行分頁和過濾

的我的應用程序的URL改變了,當我點擊頁碼:

http://localhost:1202/Issue?page=6 

到目前爲止好。

問題是,當我添加一個提交更改的下拉列表時,我無法進行頁面篩選。

如果我更改了下拉列表,我應該在查詢結果中傳遞projectId,我的partail視圖將刷新並顯示過濾後的記錄。
現在,當我頁面過濾器參數不會堅持在查詢字符串以及我的下拉列表中的選擇不堅持。

我該如何頁面以及過濾?

的Index.aspx

<form id="form-post-project-selection" class="post-comments" method="get"> 
<label for="Country">Project:</label> 
<%= Html.DropDownList("ProjectList", "--All--") %> 
</form> 

<% Html.RenderPartial("MyIssues", Model); %> 

<script type="text/javascript"> 
     $("#form-post-project-selection").submit(function(evt) { 
     var frm = $("#form-post-project-selection"); 
     var action = frm.attr("action"); 
     var serializedForm = frm.serialize(); 
     var projectId = jQuery.trim($("ProjectList").val()); 
     if (projectId.length < 1 || projectId == "-1") 
      return; 
    }); 
    $("#ProjectList").change(function() { 
     $("#form-post-project-selection").submit(); 
    }); 
</script> 

回答

1

我覺得你有幾個選擇這裏。

第一個將使用Ajax回調控制器來獲取「分頁」對象集合,所以每次過濾輸出時,都會回發過濾器標識以僅獲取頁面需要的結果集合你要。您可以使用Ajax進行分頁,並通過Ajax調用傳回過濾器標識,以便您可以返回過濾和分頁的對象,或者您可以重定向到以下解釋的不同分頁URL。

如果您在更改下拉列表中的值時使用完整頁面回發,那麼您可以將用戶重定向到其中帶有過濾器標識的另一個URL,例如。問題/過濾器/ 1

這種方式每次使用分頁鏈接時,您最終都會得到類似問題/過濾器/ 1?頁面= 6的網址,並且您不會失去過濾器。

請注意頁面的視圖不需要改變。

雖然功能結束了相同的答案這個問題是在下面的評論和張貼在這裏爲了方便。

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] })%> 
+0

移動到不同的頁面時,在馬亭的項目的例子不回發,而是有一個像鏈接:23 Picflight 2009-07-31 18:40:25

+1

行,所以在創建分頁鏈接時,請確保您的專案編號添加到鏈接以及作爲頁碼。在您粘貼的鏈接中,解決方案位於高級方案的標題下,您可以添加您需要的其他路由值。 <%= Html.Pager(ViewData.Model.PageSize,ViewData.Model.PageNumber,ViewData.Model.TotalItemCount,new {categoryname = ViewData [「CategoryDisplayName」]})%> – Webmonger 2009-07-31 19:48:03

+0

+1感謝您指出高級方案。 – Picflight 2009-07-31 20:52:14

相關問題