Muchas veces, necesitamos y queremos q nuestra interfaz de usuario sea más amigable y bonita, puesto que lo que el usuario ve es la interfaz (muchas veces no le importa lo que está por detrás)…
En ejemplo vamos a cargar un gridview desde un archivo xml el cual contiene la lista de todos los paises del mundo (si falta alguno disculpen); dicha lista contine 241 paises, lo cual haría que nuestro gridview se extendiera demasiado hacia abajo, para evitar que esto suceda vamos a usar la paginación.
La idea es disponer de un dropdownlist el cual va a contener todas las páginas del gridview, así podremos cambiar de página facilmente. Además, se visualizará cuatros imagenes las cuales tendrán la función de ir al primer, anterior, siguiente y último registro.
Es decir, al final nuestro gridview debe lucir parecido a:
Para lograr esta funcionalidad, ahi varias cosas que se deben definir.
1.Establecer la propiedad AllowPaging=”true” del gridview
2.Establecer el número de filas o registros que deseamos ver por página en el grid (ej: PageSize=”10″)
3.Personalizar el pagertemplate.
4.En el dropdownlist del pagertemplate, se ha definido el evento OnSelectedIndexChanged=”GoPage”, en este evento vamos a cambiar el la página q estamos visualizando, asi en nuestro codebehind, vamos a definir un procedimiento protected (protected para que pueda ser accedido desde el html).
Además de los pasos anteriores es necesario
1.Definir el procedimiento para cargar el gridview
2.Añadir la lógica necesaria en el evento PageIndexChanging para que nuestros botones de navegación funcionen, en este caso, con la variable e podemos acceder al numero de la página a traves de la propiedad NewPageIndex.
3.En el evento RowDataBound del gridview, se debe cargar el dropdownlist; y el label para mostrar el número total de páginas.
Los eventos que van a programar son el RowDataBound
Protected Sub GridViewDatos_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridViewDatos.RowDataBound If e.Row.RowType = DataControlRowType.Pager AndAlso Not GridViewDatos.DataSource Is Nothing Then 'TRAE EL TOTAL DE PAGINAS Dim _TotalPags As Label = e.Row.FindControl("lblTotalNumberOfPages") _TotalPags.Text = GridViewDatos.PageCount.ToString 'LLENA LA LISTA CON EL NUMERO DE PAGINAS Dim list As DropDownList = e.Row.FindControl("paginasDropDownList") For i As Integer = 1 To CInt(GridViewDatos.PageCount) list.Items.Add(i.ToString) Next list.SelectedValue = GridViewDatos.PageIndex + 1 End If End Suben el evento PageIndexChanging del DataGridView ponemos este codigo
Protected Sub GridViewDatos_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridViewDatos.PageIndexChanging GridViewDatos.PageIndex = e.NewPageIndex Call CargaGridView() End Suby la funcion CargaGridView tendra este codigo
Private Sub CargaGridView() Try Dim oDataSet As New DataSet oDataSet.ReadXml(Server.MapPath("~/App_Data/Paises.xml")) GridViewDatos.DataSource = oDataSet GridViewDatos.DataBind() Catch ex As Exception MsgBox(ex.Message.ToString) End Try End Subpara los que deseen el codigo completo aqui tienen el link
0 comentarios:
Publicar un comentario