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.
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 é a quantidade de linhas que será retornada.
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;
}
}
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.
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 é a quantidade de linhas que será retornada.
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;
}
}