0

我正在使用示例martijn Boland 的页面。

当我点击页码时,我的应用程序的 url 会发生变化:

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

到现在为止还挺好。

问题是当我添加一个提交更改的下拉列表时,我无法分页和过滤。

如果我更改我的下拉列表,我应该在查询字符串中传递 projectId,我的部分视图将刷新并显示我过滤的记录。
现在,当我分页时,过滤器参数不会粘在查询字符串中,并且下拉列表中的选择也不会粘住。

我如何分页和过滤?

索引.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>
4

1 回答 1

1

我想你在这里有几个选择。

第一个将使用 Ajax 回调控制器以获取“分页”对象集合,因此每次过滤输出时,您都会回发过滤器 ID,以便仅获取所需页面所需的结果集合。您可以使用 Ajax 进行分页,也可以使用 Ajax 调用将过滤器 ID 传回,这样您就可以取回过滤和分页的对象,或者您可以在下面解释的分页上重定向到不同的 url。

如果您在更改下拉列表中的值时使用整页回发到服务器,那么您可以将用户重定向到另一个带有过滤器 ID 的 url,例如。问题/过滤器/1

这样,每次使用分页链接时,您最终都会得到一个类似 Issue/Filter/1?page=6 的 url,并且您不会丢失您的过滤器。

请注意页面的视图不需要改变。

尽管功能最终相同,但该问题的答案在下面的评论中并在此处发布以方便起见。

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>
于 2009-07-31T07:02:23.890 回答