none
C# MVC RRS feed

  • Pregunta

  • Hola estimados,

    Necesito de su gran apoyo.

    Tengo un desarrollo con las siguientes características.

    • SQLServer
    • C#
    • MVC
    • HTML5
    • Boostrap

    El problema es que tengo una lista que se despliegan en una table con un buscador y funciona muy bien.

    Pero por la cantidad de registros agregue un compaginador (  @{Html.RenderPartial("_paginador", Model);}) y funciona bien .

    El problema esta cuando hago una búsqueda toda la pagina se refresca y se recarga. Así que trate de hacer la búsqueda con Jquery y Json para mostrar el resultado en la tabla y funciona muy bien. Pero el problema es el compaginado no he logrado que se actualice. Como podría hacer para actualizar el compaginado. Gracias adjunto el código.

    Estaré atento a sus respuestas gracias.

    Compaginado Vista Parcial

    @using XPWEB.Models
    @model BaseModelo
    
    @{
        var cantidadPaginas = (int)Math.Ceiling((double)Model.TotalDeRegistros / Model.RegistrosPorPagina);
    }
    <!--Funcionalidad: Anterior y siguiente-->
    
    
    <div class="row">
        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
            @Html.Label("", "Registro(s): " + Model.TotalDeRegistros)
        </div>
    </div>
    
    <ul class="pagination">
        @if (Model.PaginaActual == 1)
        {
            Model.ValoresQueryString["pagina"] = 1;
            <li class="disabled">@Html.ActionLink("Anterior", null, Model.ValoresQueryString)</li>
        }
        else
        {
            Model.ValoresQueryString["pagina"] = Model.PaginaActual - 1;
            <li>@Html.ActionLink("Anterior", null, Model.ValoresQueryString)</li>
        }
        @if (Model.PaginaActual == cantidadPaginas)
        {
            Model.ValoresQueryString["pagina"] = cantidadPaginas;
            <li class="disabled">@Html.ActionLink("Siguiente", null, Model.ValoresQueryString)</li>
        }
        else
        {
            Model.ValoresQueryString["pagina"] = Model.PaginaActual + 1;
            <li>@Html.ActionLink("Siguiente", null, Model.ValoresQueryString)</li>
        }
    </ul>
    <!--Funcionalidad: Páginas-->
    @{
        int Inicial = 1;
        var radio = 3;
        var cantidadMaximaDePaginas = radio * 2 + 1;
        int Final = (cantidadPaginas > cantidadMaximaDePaginas) ? cantidadMaximaDePaginas : cantidadPaginas;
        if (Model.PaginaActual > radio + 1)
        {
            Inicial = Model.PaginaActual - radio;
            if (cantidadPaginas > Model.PaginaActual + radio)
            {
                Final = Model.PaginaActual + radio;
            }
            else
            {
                Final = cantidadPaginas;
            }
        }
    }
    
    <ul class="pagination">
        @{Model.ValoresQueryString["pagina"] = 1; }
        <li>@Html.ActionLink("Primera", null, Model.ValoresQueryString)</li>
        @for (int i = Inicial; i <= Final; i++)
        {
            Model.ValoresQueryString["pagina"] = i;
            if (i == Model.PaginaActual)
            {
                <li class="active">@Html.ActionLink(i.ToString(), null, Model.ValoresQueryString)</li>
            }
            else
            {
                <li>@Html.ActionLink(i.ToString(), null, Model.ValoresQueryString)</li>
            }
        }
        @{Model.ValoresQueryString["pagina"] = cantidadPaginas; }
        <li>@Html.ActionLink("Última", null, Model.ValoresQueryString)</li>
    </ul>
    

    Código del Modelo

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using XPCapaDatos.Entidades;
    using XPWEB.Models;
    
    namespace XPWEB.ViewModels
    {
        public class IndexViewModel:BaseModelo
        {
            public List<spmarcalistar_Result> Marcas { get; set; }
    
    
        }
    }

    El código del HTML

    @using XPWEB.ViewModels
    @model IndexViewModel
    
    @{
        ViewBag.Title = "Marcas";
    }
    
    <div class="panel panel-primary">
        <div class="panel-heading">Lista de Marcas</div>
    </div>
    
    <div class="col-sm-push-12">
    
        <div class="row">
            @using (Html.BeginForm())
                {
                <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
                    @Html.TextBox("txtnombre", "", new{@class = "form-control popver",@name = "txtnombre",@id = "txtnombre",@placeholder = "Ingresar Marca",@autocomplete = "off",@style = "text-transform:uppercase; max-width: 100%",data_toggle = "tooltip",data_placement = "top",title = "Ingresar Marca"
               })
                </div>
                <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
                    <input id="btnBuscar" name="btnBuscar" class="btn btn-danger" type="button" value="Buscar Marca" />
                </div>
            }
            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
                <button class="btn btn-danger mostrar" data-id="Marca/Create" id="btnnuevo" name="btnnuevo">Nueva Marca</button>
            </div>
        </div>
    
        <div id="myPartialViewDiv">
    
            @{Html.RenderPartial("_paginador", Model);}
    
        </div>
    
            <div id="ListaMarcas">
                <table class="table table-hover" id="table-users">
    
                    <thead>
                        <tr class="btn-defaul">
                            <th>N°</th>
                            <th>Nombre</th>
                            <th>ID</th>
                            <th>Editar</th>
                            <th>Eliminar</th>
                        </tr>
                    </thead>
                    <tbody id="contenido"></tbody>
    
    
                </table>
            </div>
    
        </div>

    Código del controlador, Haciendo tracer los resultados son correctos las consultas están bien. Lo que necesito es actualizar el paginado.

            [HttpPost]
            public JsonResult GetMarcaListar(string txtnombre, int pagina = 1)
            {
                //Compaginado
                int cantidadRegistrosPorPagina = 25; // parámetro
                List<spmarcalistar_Result> Marcas = new List<spmarcalistar_Result>();
    
                int totalDeRegistros = 0;
    
                if (txtnombre == null || txtnombre == "")
    
                {
    
                    txtnombre = "0";
                }
    
                Marcas = MarcaLogica.Listar(txtnombre).ToList()
                .Skip((pagina - 1) * cantidadRegistrosPorPagina)
                .Take(cantidadRegistrosPorPagina).ToList();
                totalDeRegistros = MarcaLogica.Listar(txtnombre).Count();
    
                var modelo = new ViewModels.IndexViewModel();
    
                modelo.Marcas = Marcas;
                modelo.PaginaActual = pagina;
                modelo.TotalDeRegistros = totalDeRegistros;
                modelo.RegistrosPorPagina = cantidadRegistrosPorPagina;
                modelo.ValoresQueryString = new RouteValueDictionary();
    
                var marcaretorno = modelo.Marcas;
                var paginadoretorno = modelo;
    
                return Json(marcaretorno, JsonRequestBehavior.AllowGet);
    
            }


    Conocuica

    lunes, 3 de febrero de 2020 14:12

Todas las respuestas