Pergunta

Eu estou usando o exemplo martijn Boland do à página.

O url do meu aplicativo muda quando eu clicar sobre os números de página:

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

Até aí tudo bem.

O problema é quando eu adicionar um dropdownlist que submete sobre a mudança, não posso página, bem como filtro.

Se eu mudar minha suspensa, eu deveria passar o projectId na querysting, minha opinião partail irá atualizar e exibir minhas recoreds filtrados.
Agora, quando eu página o parâmetro de filtro não ficar na querystring, bem como a seleção no meu suspenso não se ater.

Como posso página, bem como filtro?

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>
Foi útil?

Solução

Eu acho que você tem um par de opções aqui.

A primeira seria a de usar Ajax para chamar de volta a um controlador para obter uma "paginado" coleção objeto de volta para que cada vez que você filtrar a saída você postback o ID do filtro para obter apenas as coleções resultados que você precisa para a página que você quer. Você poderia fazer a paginação com o Ajax, bem passar de volta o ID do filtro com a chamada Ajax assim que você vai ter a volta objeto filtrado e paginado ou você pode redirecionar para uma URL diferente na paginação explicado abaixo.

Se você usar postback de página inteira para o servidor sobre a alteração do valor na lista suspensa então você poderia redirecionar o usuário para outra url com o ID de filtro nele por exemplo. Emissão / Filtro / 1

Desta forma, cada vez que os links de paginação são usados ??você vai acabar com um url como Issue / Filtro / 1? Page = 6 e você não iria perder o seu filtro.

Por favor, note a exibição da página não precisa variar.

Tudo bem que as extremidades de função até a mesma a resposta a esta pergunta é nos comentários abaixo e postado aqui para facilidade.

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top