Publicidad

Paginación de un DataList y un Repeater.


Por Alex el 15/05/2007, Comentarios: 1

Comparte este artículo:      




Los controles DataList y Repeater no tienen métodos ni funciones para paginar los datos que muestran en los listados. Para paginar los resultados que muestran hay varias formas de hacerlo, una de ellas y la que veremos en este artículo es utilizar un control PagedDataSource.


La utilización de este control es sencilla y la mejor forma de verlo es mediante un ejemplo:

Imagen

La carga de un DataList seria de la siguiente forma:

SqlConnection conn = new SqlConnection("Server=localhost;Database=PUBS;Uid=sa;Pwd=as");
SqlCommand cmd = new SqlCommand("Select * From authors", conn);

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(ds);

DataList1.DataSource = ds;
DataList1.DataBind();

Esto lo que haría es que el DataList muestre todos los registros que devuelve la consulta.

Ahora vamos a utilizar un control PagedDataSource para páginar los resultados. La idea es que al pulsar siguiente o anterior se pase por GET la página que le corresponde, en Request.QueryString["IDP"], este valor se lo asignaremos a la variable CurPage para saber en que página estamos.

El código es el siguiente:

SqlConnection conn = new SqlConnection("Server=localhost;Database=PUBS;Uid=sa;Pwd=as");
SqlCommand cmd = new SqlCommand("Select * From authors", conn);

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(ds);

Creamos el objeto para páginar.

PagedDataSource objPds = new PagedDataSource();

Asignamos el ds donde tenemos los datos de la consulta al método datasource del objeto paginación

objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 10;
int CurPage;

Recogemos la página que toca mostrar, si no hay nada es la primera página

if (Request.QueryString["IDP"] != null)
  CurPage = Convert.ToInt32(Request.QueryString["IDP"]);
else
  CurPage = 1;

Asignamos la página actual.

objPds.CurrentPageIndex = CurPage - 1;
strPaginacion = "";

if (!objPds.IsFirstPage)
  strPaginacion = "<< anterior";

if (objPds.PageCount > 0)
  strPaginacion += "(pagina " + CurPage.ToString() + " de " + objPds.PageCount.ToString() + ")";

if (objPds.PageCount > 1)
 if (!objPds.IsLastPage)
  strPaginacion += "siguiente >>";

DataList1.DataSource = objPds;
DataList1.DataBind();

Por ultimo, creamos una funcion GetPaginacion() que la llamaremos desde el FooterTemplate para que nos pinte el número de páginas y los links de seguiente y anterior.

  <%= GetPaginacion() %>

Y con esto ya tememos páginado nuestro DataList o Repeater.

Os dejo dos ejemplos, uno con un datalist y otro con un repeater, como vereis son exactamente igual.

Enlaces relacionadas:

Código del artículo 

Saludos
Alex


Si te ha gustado el artículo compartelo en:      



También puede interesarte:

Instalar .NET Core en Ubuntu

Instalar .NET Core en Ubuntu

Por Alex, el 07/02/2020

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Crear, copiar y borrar bases de datos SQL Server desde c#.

Crear, copiar y borrar bases de datos SQL Server desde c#.

Por Alex, el 07/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)

avatar

jan 12/08/2018 06:30:09

Hola




SIGUENOS EN

ARCHIVO

Publicidad

.