Domanda

Sto usando l'esempio martijn Boland's alla pagina.

L'URL della mia app cambia quando faccio clic sui numeri di pagina:

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

Fin qui tutto bene.

Il problema è quando aggiungo un elenco a discesa che invia in caso di modifica, non riesco a filtrare e filtrare.

Se cambio il mio menu a discesa, dovrei passare il projectId nel querysting, la mia vista di coda si aggiornerà e visualizzerà i miei rimandi filtrati.
Ora, quando pagina il parametro del filtro non si attacca nella stringa di query, così come la selezione nel mio menu a discesa non si attacca.

Come posso pagina oltre che filtrare?

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>
È stato utile?

Soluzione

Penso che tu abbia un paio di opzioni qui.

Il primo dovrebbe usare Ajax per richiamare un controller per ottenere un "Paged" raccolta di oggetti in modo che ogni volta che si filtra l'output si postback l'ID filtro per ottenere solo le raccolte di risultati necessarie per la pagina desiderata. È possibile eseguire il paging con Ajax e restituire l'ID filtro con la chiamata Ajax in modo da recuperare l'oggetto filtrato e il paging oppure reindirizzare a un URL diverso sul paging spiegato di seguito.

Se si utilizza il postback a pagina intera sul server per modificare il valore nel menu a discesa, è possibile reindirizzare l'utente a un altro url con l'ID filtro al suo interno, ad es. Emissione / Filtro / 1

In questo modo ogni volta che vengono utilizzati i collegamenti di paging si finirà con un URL come Issue / Filter / 1? page = 6 e non si perderà il filtro.

La visualizzazione della pagina non deve variare.

Tutti, sebbene la funzione finisca allo stesso modo, la risposta a questa domanda è nei commenti qui sotto e pubblicata qui per facilità.

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top