miércoles, 9 de diciembre de 2009

ASP.NET GridView (2)

Continuando con el control GridView de ASP.NET, vamos a hablar de la ordenación del control

ORDENACION

Para llevar a cabo la ordenación de un GridView, necesitamos seguir los siguientes pasos:

1) Establecer la propiedad AllowSorting a True: Como su nombre, en ingles, nos indica Permitir Ordenación, es de tipo boolean así que le indicamos “True”. Cuando activamos esta propiedad, las cabeceras de las columnas de nuestro Grid se transforman en linkbuttons.

2) Definir el Evento Sorting

Este evento se ejecuta cada vez, que pulsemos sobre una cabecera.

Recibe como parámetros el sender, y “e” que es de tipo “GridViewSortEventArgs”.

Dentro del evento, pondremos el siguiente bloque de código:

'Comprobamos que el datasource no está vacio
If Not Me.GridView1.DataSource Is Nothing Then
'Creamos una variable de tipo vista parara llevar a cabo la ordenación de la tabla
Dim dtbView As Data.DataView = New Data.DataView(CType(GridView1.DataSource, Data.DataTable))
dtbView.Table = CType(GridView1.DataSource, Data.DataTable)
'Inicializamos el filtro
dtbView.Sort = e.SortExpression
If ViewState("Orden") Is Nothing Then ViewState("Orden") = "DESC"
'Añadimos el orden Ascendente o descendete.
Select Case ViewState("Orden")
Case "ASC"
dtbView.Sort &= " DESC"
ViewState("Orden") = "DESC"
Case "DESC"
dtbView.Sort &= " ASC"
ViewState("Orden") = "ASC"
Case Else
dtbView.Sort &= " ASC"
ViewState("Orden") = "ASC"


End Select
'Volvemos a enlazar el grid.
GridView1.DataSource = dtbView
GridView1.DataBind()

End If

Nos vamos a apoyar en el ViewState, para manejar si el orden es Ascendente o Descendente.

Si el grid, no está enlazado mediante código, es decir, está enlazado desde la vista de diseño a un origen de datos, no será necesario insertar el código anterior.

La propiedad “SortExpresion” de “e”, contiene la columna que hemos seleccionado en el grid, la cual ha provocado que se ejecute el evento Sorting.

No hay comentarios:

Publicar un comentario