문제

나는 예제를 사용하고 있습니다 Martijn Boland 's 페이지로.

페이지 번호를 클릭하면 내 앱의 URL이 변경됩니다.

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

여태까지는 그런대로 잘됐다.

문제는 변경시 제출 한 드롭 다운 목록을 추가 할 때 필터뿐만 아니라 페이지를 페이지에 넣을 수 없습니다.

드롭 다운을 변경하면 쿼리 스팅에서 ProjectID를 전달해야합니다. 부품보기가 새로 고쳐지고 필터링 된 재활용을 표시합니다.
이제 페이지를 표시하면 필터 매개 변수가 쿼리 스트링에 고정되지 않고 드롭 다운의 선택이 고정되지 않습니다.

필터뿐만 아니라 어떻게 페이지를 페이지에 넣을 수 있습니까?

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>
도움이 되었습니까?

해결책

여기에 몇 가지 옵션이 있다고 생각합니다.

첫 번째는 ajax를 사용하여 컨트롤러로 다시 호출하여 "PAGED"객체 컬렉션을 다시 가져 오므로 출력을 필터링 할 때마다 필터 ID를 포스트 백마다 원하는 페이지에 필요한 결과 컬렉션 만 가져옵니다. Ajax로 페이징을하고 Ajax 호출로 필터 ID를 다시 전달할 수 있으므로 필터링 및 페인트 객체를 다시 가져 오거나 아래 설명 된 페이징에서 다른 URL로 리디렉션 할 수 있습니다.

드롭 다운에서 값을 변경할 때 서버로 전체 페이지 포스트백을 사용하는 경우 필터 ID가있는 다른 URL로 사용자를 리디렉션 할 수 있습니다. 문제/필터/1

이 방법으로 페이징 링크를 사용할 때마다 문제/필터/1? Page = 6과 같은 URL로 끝나고 필터를 잃지 않습니다.

페이지보기는 다를 필요가 없습니다.

기능이 동일하게 끝나지만이 질문에 대한 답은 아래의 의견에 있으며 여기에 쉽게 게시했습니다.

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top