Paginação

Nesta video aula aprenderemos como fazer uma paginação com a Linguagem C#, a importância que é fazer a seleção dos registros direto pelo banco e toda a estrutura que está atras desse conceito.

assinaturaAssine nossa Comunidade

Aplicação Web C# - Paginação

OFF SET LIMIT

No Sql Server, temos dois comandos importantes de paginação, que são OFF SET E LIMIT .

Utilizamos OFF SET E LIMIT para fazer a paginação direto no banco de dados.

OFF SET é a página corrente no momento. Devemos fazer um cáculo para o OFFSET mostrar a página corrente.

LIMIT Linhas por pagina

ROW FETCH NEXT ROW ONLY

ROW FETCH NEXT ROW ONLY é a quantidade de linhas que será retornada.

TOTAL DE PÁGINAS

Para calcular a quantidade de páginas , dividir a quantidade de registros pela quantidade de linhas.

No sql server teremos o seguinte código para paginação:

      
        SELECT [id] 
               [Nome] 
        FROM [Paginacao].[dbo].[Clientes] 

        OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY;

       
    

Abaixo mostraremos um exemplo de paginação:

      
        namespace Paginacao
        {
          public static List< Cliente> Buscar(int porPagina, int paginaCorrente);
          {
            var clientes = new List< Cliente>();
            var offset = 1;
            if(paginaCorrente > 1)            
            {
              offset = (porPagina * (paginaCorrente -1)) + 1;
            }
            string queryString = "DECLARE @Limit INT = " + porPagina + ",@offset INT = " + paginaCorrente + 
                                 " ; WITH resultado AS 
                                    (
                                      SELECT *, ROW_NUMBER() OVER(ORDER BY ID)as linha 
                                       FROM clientes WHERE Id is not null)
                                    )
                                    SELECT *
                                    FROM resultado
                                    WHERE linha >=" + @offset + 
                                    "AND linha <" +  @offset + @Limit
                                     
            using (SqlConnection connection = new SqlConnection(@Integrated Security = SSPI;))
            using (SqlCommand command = new SqlCommand(queryString, connection)) 
            {
              connection.Open();
              using (SqlDataReader reader = command.ExecuteReader()) 
              {
                while (reader.Read()) 
                {
                  clientes.Add(new CLiente() { ID = Convert.ToInt32(reader["id"]), Nome = reader["Nome"].ToString()});
                }
              }
            }
            return clientes;
          }
        }
       
     

Vamos chamar a função Buscar na rota Index.

      
        namespace Paginação.Controllers
        {
          public class HomeController : Controller 
            {
              public ActionResult Index()
              {
                var paginaCorrente = 1;
                if (!string.IsnullOrEmpty(Request["pagina"])) 
                {
                    paginaCorrente = Convert.ToInt32(Request["pagina"]);
                }
                ViewBag.paginaCorrente = paginaCorrente;
                ViewBag,porPagina = 10;
                ViewBag.totalRegistros = Cliente.Total();
                ViewBag.clientes = cliente.Buscar(ViewBag.porPagina, paginaCorrente);
                return View();
              }
            }
        }
       
    
Criaremos o método Total, que retornará o total de clientes.
      
        namespace Paginacao
        {
          public static int Total;
          {
            string queryString = "select count(*) from clientes;"
            var total = 0; 
                                     
            using (SqlConnection connection = new SqlConnection(@Integrated Security = SSPI;))
            using (SqlCommand command = new SqlCommand(queryString, connection)) 
            {
              connection.Open();
              total = Convert.ToInt32(command.ExecuteScalar());
            }
            return total;
          }
        }
       
     

Paginação

Nesta video aula aprenderemos como fazer uma paginação com a Linguagem C#, a importância que é fazer a seleção dos registros direto pelo banco e toda a estrutura que está atras desse conceito.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Aplicação Web C# - Paginação

OFF SET LIMIT

No Sql Server, temos dois comandos importantes de paginação, que são OFF SET E LIMIT .

Utilizamos OFF SET E LIMIT para fazer a paginação direto no banco de dados.

OFF SET é a página corrente no momento. Devemos fazer um cáculo para o OFFSET mostrar a página corrente.

LIMIT Linhas por pagina

ROW FETCH NEXT ROW ONLY

ROW FETCH NEXT ROW ONLY é a quantidade de linhas que será retornada.

TOTAL DE PÁGINAS

Para calcular a quantidade de páginas , dividir a quantidade de registros pela quantidade de linhas.

No sql server teremos o seguinte código para paginação:

      
        SELECT [id] 
               [Nome] 
        FROM [Paginacao].[dbo].[Clientes] 

        OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY;

       
    

Abaixo mostraremos um exemplo de paginação:

      
        namespace Paginacao
        {
          public static List< Cliente> Buscar(int porPagina, int paginaCorrente);
          {
            var clientes = new List< Cliente>();
            var offset = 1;
            if(paginaCorrente > 1)            
            {
              offset = (porPagina * (paginaCorrente -1)) + 1;
            }
            string queryString = "DECLARE @Limit INT = " + porPagina + ",@offset INT = " + paginaCorrente + 
                                 " ; WITH resultado AS 
                                    (
                                      SELECT *, ROW_NUMBER() OVER(ORDER BY ID)as linha 
                                       FROM clientes WHERE Id is not null)
                                    )
                                    SELECT *
                                    FROM resultado
                                    WHERE linha >=" + @offset + 
                                    "AND linha <" +  @offset + @Limit
                                     
            using (SqlConnection connection = new SqlConnection(@Integrated Security = SSPI;))
            using (SqlCommand command = new SqlCommand(queryString, connection)) 
            {
              connection.Open();
              using (SqlDataReader reader = command.ExecuteReader()) 
              {
                while (reader.Read()) 
                {
                  clientes.Add(new CLiente() { ID = Convert.ToInt32(reader["id"]), Nome = reader["Nome"].ToString()});
                }
              }
            }
            return clientes;
          }
        }
       
     

Vamos chamar a função Buscar na rota Index.

      
        namespace Paginação.Controllers
        {
          public class HomeController : Controller 
            {
              public ActionResult Index()
              {
                var paginaCorrente = 1;
                if (!string.IsnullOrEmpty(Request["pagina"])) 
                {
                    paginaCorrente = Convert.ToInt32(Request["pagina"]);
                }
                ViewBag.paginaCorrente = paginaCorrente;
                ViewBag,porPagina = 10;
                ViewBag.totalRegistros = Cliente.Total();
                ViewBag.clientes = cliente.Buscar(ViewBag.porPagina, paginaCorrente);
                return View();
              }
            }
        }
       
    
Criaremos o método Total, que retornará o total de clientes.
      
        namespace Paginacao
        {
          public static int Total;
          {
            string queryString = "select count(*) from clientes;"
            var total = 0; 
                                     
            using (SqlConnection connection = new SqlConnection(@Integrated Security = SSPI;))
            using (SqlCommand command = new SqlCommand(queryString, connection)) 
            {
              connection.Open();
              total = Convert.ToInt32(command.ExecuteScalar());
            }
            return total;
          }
        }