Question

J'utilise l'exemple de Martijn Boland's à la page.

L'URL de mon application change lorsque je clique sur les numéros de page:

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

Jusqu'ici tout va bien.

Le problème, c’est que lorsque j’ajoute une liste déroulante qui est soumise en cas de modification, je ne peux pas paginer et filtrer.

Si je modifie ma liste déroulante, je devrais transmettre l'identifiant projectId dans la requête, ma vue Partail s'actualisera et affichera mes sauvegardées filtrées.
Maintenant, lorsque je recherche une page, le paramètre de filtre ne reste pas dans la chaîne de requête, de même que la sélection dans ma liste déroulante ne reste pas.

Comment puis-je filtrer et filtrer?

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>
Était-ce utile?

La solution

Je pense que vous avez quelques options ici.

Le premier serait d'utiliser Ajax pour rappeler un contrôleur afin d'obtenir un "paginé". collection d'objets en arrière afin que chaque fois que vous filtrez la sortie, vous publiez l'ID de filtre pour obtenir uniquement les collections de résultats dont vous avez besoin pour la page souhaitée. Vous pouvez également effectuer la pagination avec Ajax en renvoyant l’ID de filtre avec l’appel Ajax afin que vous récupériez l’objet filtré et paginé, ou vous pouvez rediriger vers une autre URL lors de la pagination, expliquée ci-dessous.

Si vous utilisez la publication de page entière sur le serveur lors de la modification de la valeur dans la liste déroulante, vous pouvez rediriger l'utilisateur vers une autre URL contenant l'identifiant du filtre. Numéro / Filtre / 1

Ainsi, chaque fois que vous utiliserez les liens de pagination, vous obtiendrez une URL telle que Issue / Filter / 1? page = 6 et vous ne perdrez pas votre filtre.

Notez que l'affichage de la page n'a pas besoin de varier.

Bien que la fonction se termine de la même manière, la réponse à cette question figure dans les commentaires ci-dessous et est publiée ici par souci de simplicité.

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top