Frage

Ich bin mit dem Beispiel martijn Bolands Seite.

Die URL meiner App ändert sich, wenn ich auf die Seitenzahlen klicken:

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

So weit, so gut.

Das Problem ist, wenn ich einen Dropdownlist hinzufügen, die auf Änderung einreicht, kann ich nicht Seite sowie Filter.

Wenn ich mein Dropdown ändern, soll ich die projectId im querysting passieren, meine partail Ansicht wird aktualisiert und mein gefiltert recoreds anzuzeigen.
Nun, wenn ich Seite der Filterparameter kleben nicht im Abfragezeichenfolgeflag sowie die Auswahl in meinem Drop-Down nicht haften bleiben.

Wie kann ich Seite sowie Filter?

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>
War es hilfreich?

Lösung

Ich glaube, Sie haben ein paar Optionen hier.

Die erste würde Ajax zu verwenden, um einen Controller zu rufen zurück einen „Paged“ Objektsammlung, um wieder so jedes Mal, wenn die Ausgabe filtern Sie die Filter-ID Postback nur Sammlungen, die Ergebnisse bekommen Sie für die Seite benötigen Sie wollen. Sie können den Paging tun mit Ajax als auch dem Bestehen der Filter-ID mit dem Ajax-Aufruf zurück, so dass Sie Objekt des gefilterte und ausgelagert werden zurückkommen, oder Sie konnten auf eine andere URL umleiten auf Paging unten erläutert wird.

Wenn Sie den Wert auf die Veränderung in der Dropdown ganze Seite Postbacks an den Server verwenden, dann können Sie den Benutzer auf eine andere URL mit dem Filter-ID darin umleiten zB. Ausgabe / Filter / 1

Auf diese Weise jedes Mal, wenn die Paging-Links verwendet werden, werden Sie mit einer URL wie Ausgabe / Filter / 1? Page = 6 am Ende, und Sie würden Ihre Filter nicht verlieren.

Bitte beachten Sie die Ansicht der Seite muss nicht verändern.

Alle obwohl die Funktion die gleiche endet die Antwort auf diese Frage in den Kommentaren unten ist und hier zur Vereinfachung geschrieben.

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top