sábado, 18 de julho de 2015

Razor Paginação

@using Lapuinka.PCP.Resources
@using Lapuinka.PCP.Web
@using Lapuinka.PCP.Web.Controllers
@using Lapuinka.PCP.Service;

@{
    int paginaIndice = ViewBag.PaginaAtual;
    int total = ViewBag.Quantidade;
    int tamanhoPagina = ViewBag.TamanhoPagina == null ? MvcApplication.LimiteRegistroPaginacao : ViewBag.TamanhoPagina;
    int ultimaPagina = (total / tamanhoPagina);
    bool exibirMensagemVazia = ViewBag.ExibirMensagemVazia ?? true;
   
    if (total % tamanhoPagina != 0)
    {
        ultimaPagina++;
    }
                 
    int tamanhoJanela = 5;
    int offSet = tamanhoJanela / 2;

    int inicio = paginaIndice <= offSet ? 1 : paginaIndice - offSet;
    int fim = paginaIndice <= offSet ? tamanhoJanela : paginaIndice + offSet;
    inicio = inicio <= 0 ? 1 : inicio;
    fim = fim >= ultimaPagina  ? ultimaPagina : fim;
    fim = total <= tamanhoJanela ? 1 : fim;
       
    int anterior = paginaIndice - 1 >= 0 ? paginaIndice - 1 : 1;
    int proxima = paginaIndice + 1 <= ultimaPagina ? paginaIndice + 1 : paginaIndice;
}   
@if (total > 0)
{
    <div class="paginacao">
    @if (inicio != fim)
    {
        if (anterior >= 1)
        {
                    <a href="javascript:TrocaPagina(1);"><<</a>
                    <a href="javascript:TrocaPagina(@anterior);"><</a>
        }
           
        for (int i = inicio; i <= fim; i++)
        {
            if (i == paginaIndice)
            {
                    @i.ToString()
            }
            else
            {
                    <a href="javascript:TrocaPagina(@i.ToString());">@i.ToString()</a>
            }
        }
        if (ultimaPagina > paginaIndice)
            {
                <a href="javascript:TrocaPagina(@proxima);">></a>
                <a href="javascript:TrocaPagina(@ultimaPagina);">>></a>
            }
        }
    else
    {
           @inicio.ToString()
    }
   </div>   
}
else
{
    if (exibirMensagemVazia)
    {
    <div class="greenBorder" id="outer">
       <div id="middle">
             <div class="greenBorder" id="inner">
                    @Resource.Label_Lista_Vazia
             </div>
       </div>
   </div>
    }

}
Postar um comentário