Mostrando entradas con la etiqueta paginacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta paginacion. Mostrar todas las entradas

miércoles, 27 de agosto de 2014

Permitir paginacion en un GridView usando DataReader

Para poder paginar un gridView cuyo contenido lo tenemos en una consulta SQL y ejecutada sobre un DataReader debemos de utilizar un componente compatible con IEnumerable. Por tanto directamente no es posible. Debemos usar otro objeto como por ejemplo un DataTable. Veamoslo:

private void cargarDatos(){          
           ...
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            string vConsulta = "SELECT ...."
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                    GridView1.DataSource = rdr;
                     GridView1.DataBind();
            }
           ...
}

Este código es perfectamente válido para mostrar los resultados en el GridView.

Pero supongamos que quisieramos paginar el contenido del GridView1. Para ello debemos definir la popiedad del gridView AllowPaging = true y definir su metodo pageIndexChanging

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gv = (GridView)sender;
            gv.PageIndex = e.NewPageIndex;
            cargarDatos();
        }

Para que funcione la paginacion deberiamos cambiar la asignacion:

 GridView1.DataSource = rdr;

por esta otra

DataTable dt = new DataTable();
dt.Load(rdr);

GridView1.DataSource = dt;

Datatable implementa IEnumerable y permite la paginacion correctamente


Jesús Moreno - Ingeniero Ténico Informático - consultor Informático

Hola, soy Jesús Moreno Ingeniero Técnico Informático en sistemas por la US y propietario de éste blog. Mi trabajo en los ultimos años se ...