Pregunta

Estoy usando el ejemplo martijn Boland's a la página.

La URL de mi aplicación cambia cuando hago clic en los números de página:

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

Hasta ahora todo bien.

El problema es que cuando agrego una lista desplegable que se envía en el cambio, no puedo buscar y filtrar.

Si cambio mi menú desplegable, debería pasar el projectId en la consulta, mi vista parcial se actualizará y mostrará mis registros filtrados.
Ahora cuando busco el parámetro de filtro no se pega en la cadena de consulta, así como la selección en mi menú desplegable no se pega.

¿Cómo puedo buscar y filtrar?

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>
¿Fue útil?

Solución

Creo que tienes un par de opciones aquí.

El primero sería usar Ajax para volver a llamar a un controlador para obtener un "Paginado" volver a recopilar objetos, por lo que cada vez que filtra la salida, devuelve la ID del filtro para obtener solo las colecciones de resultados que necesita para la página que desea. Puede hacer la paginación con Ajax y pasar la ID del filtro con la llamada Ajax para que recupere el objeto filtrado y paginado o puede redirigir a una url diferente en la paginación explicada a continuación.

Si usa la devolución de datos de la página completa al servidor al cambiar el valor en el menú desplegable, entonces podría redirigir al usuario a otra url con la identificación del filtro, por ejemplo. Problema / Filtro / 1

De esta manera, cada vez que se usen los enlaces de paginación, terminará con una URL como Issue / Filter / 1? page = 6 y no perderá su filtro.

Tenga en cuenta que la vista de la página no necesita variar.

Aunque la función termina igual, la respuesta a esta pregunta se encuentra en los comentarios a continuación y se publica aquí para facilitar su uso.

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top