miércoles, 23 de diciembre de 2009

ASP.NET GridView (3)

Continuando con las entradas del Gridview...
SELECCIÓN DE REGISTROS:
¿Cómo podemos seleccionar un registro en nuestro GridView en ASP.NET?
Para poder llevar a cabo la selección de una fila en el grid, vamos a definir una nueva columna en el grid del tipo “CommandField”. Lo podemos hacer a través del explorador de propiedades del grid en la propiedad “Columns”. Cuando lo hacemos de está manera, podemos indicarle que el tipo de la nueva Columna sea “Select”, e indicarle el teto que va a aparecer en el GridView.
Cuando ejecutemos nuestra página veremos en el grid la nueva columna, pero en principio, no notaremos nada nuevo.
¿Cómo sabemos que se ha seleccionado algún elemento?
Una manera bastante visual, de determinar que hay un elemento seleccionado es cambiar la propiedad: “SelectedRowStyle”.
Esta propiedad nos permite indicar el estilo que se va a aplicar a la fila seleccionada.



Para el ejemplo, he puesto que se ponga el fondo amarillo, y la letra en cursiva y negrita.

Si volvemos a ejecutar nuestra pagina y pulsamos select sobre una de nuestras filas aparecerá, con las caracteristicas indicadas antes.


Otra posibilidad de comprobar que se ha seleccionado algo, por ejemplo, sería agregar unas cajas de texto para ver los datos de nuestro grid, y en el evento "SelectedIndexChanging", las rellenemos.

¿Como rellenar los cajas de texto con los datos de la fila correcta?

El argumento "e" del evento, contiene en la propiedad "NewSelectedIndex", el indice de la fila seleccionada asi que, directamente:

txtID.Text = GridView1.Rows(e.NewSelectedIndex).Cells(2).Text
txtTitulo.Text = GridView1.Rows(e.NewSelectedIndex).Cells(3).Text
txtDirector.Text = GridView1.Rows(e.NewSelectedIndex).Cells(4).Text
txtSinopsis.Text = GridView1.Rows(e.NewSelectedIndex).Cells(5).Text

Espero que os gusten los articulos....
PD: Dentro de poco subiré el código a SkyDrive, para que lo descargueis!

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.

ASP.NET GridView (1)

Es un control bastante utilizado en ASP.NET, es el control GridView (Rejilla, Listado...).
Nos permite representar un conjunto de datos obtenidos desde un origen de datos (DataSource). Nuestro origen de datos pueden ser:
- Una base de Datos (SQL, Oracle, etc)
- Un fichero XML
- ...
El primer paso para visualizar los datos en nuestro Grid es establecer la propiedad DataSource, y hacer una llamada al método DataBind()
que se encarga de enlazar el origen de datos con el Grid.
Con esto, ya podremos visualizar datos en nuestro aspx.
Pero vamos a ir mas allá.
PAGINACIÓN
Podemos establecer paginacion en nuestro Grid, para que no se vean todos los datos apilados, para ello haremos los siguientes pasos:
1) Establecer la propiedad AllowPaging a true.
2) Indicaremos el nº de elemetos a visualizar por cada pagina con la propiedad PageSize.
3) Añadiremos el evento PageIndexChanging()
En este evento indicaremos las siguientes acciones:
- CurrentPage=e.NewPageIndex
- DataBind() volvemos a enlazar la rejilla

Continuará...

Desplazarte por un ListView a través de código

En este artículo voy a comentar como podemos a través de código desplazarnos por un control ListView , en modo "DetailsView" * , en una aplicación Windows Form, y de esta forma similiar los botones de desplazamiento de un recordset. Indicando también que solo se va a permitir la selección de un único elemento.

En primer lugar, vamos a definir una variable que va a permitirnos controlar en que elemento nos encontramos en cada momento.

private intElementoSeleccionado as integer = -1

A continuación, vamos a definir una función que se va a encargar de limpiar los elementos seleccionados del listview, se indicará que el elemento referenciado por el índice (intElementoSeleccionado) está seleccionado y tiene el foco, y además ponemos el foco en el control listview (lvwLista).

Private Sub Cambiar_Elemento()
lvwLista.SelectedItems.Clear()
lvwLista.Items(intElementoSeleccionado).Selected = True
lvwLista.FocusedItem = lvwLista.Items(intElementoSeleccionado)
lvwLista.Focus()
End Sub
A continuación, tendremos que crear los botones de desplazamiento, en mi caso tengo 4 botones: Ir al primer Registro, Ir al Registro anterior, Ir Al siguiente Registro e Ir al Último Registro.

Para el botón "Ir al primer Registro", vamos a establecer el valor de
"intElementoSeleccionado" a 0, para indicar que es el primer registro.

intElementoSeleccionado=0

Para el botón "Ir al Registro Anterior", vamos a disminuir en "1" el valor de "intElementoSeleccionado", teniendo en cuenta que el valor no puede ser inferior a 0.

If intElementoSeleccionado > 0 Then intElementoSeleccionado -= 1

Para el botón "Ir al siguiente Registro", vamos a incrementar el valor de "intElementoSeleccionado" de 1 en 1, comprobando que el valor no es superior al número de elementos del ListView.

If intElementoSeleccionado < lvwLista.Items.Count - 1 Then intElementoSeleccionado += 1
Para el botón "Ir al último Registro", vamos a establecer el valor de "intElementoSeleccionado" al número de elementos de nuestro ListView para indicar que es el primer registro.

intElementoSeleccionado=lvwLista.Items.Count - 1


Además de estas líneas anteriores, en cada uno de los botones vamos a tener que hacer una llamada a nuestra función "Buscar", para que "automáticamente" nos lleve a cabo nuestra selección del registro.

*El ejemplo es válido también para otros modos del ListView.

Espero que os sea útil.

Un saludo.

Los Snippets y Visual Studio

Un "Snippet", es un pequeño fragmento de código reutilizable.

Exixten varias herramientas de generación de snippets, las cuales nos permiten además de generar el SNIPPET las siguientes opciones:

- Seleccionar el lenguaje del snippet.
- Seleccionar un "atajo" para insertar el snippet.
- Insertar Fragmentos sustituibles: Los fragmentos sustituibles son palabras que aparecerán en un color distinto al resto del código cuando se insertan en el código, y una vez modificado uno, automáticamente se cambian el resto de ocurrencias de dicho fragmento.

Algunas de estas herramientas también nos permiten la exportación de los snippets que generemos a través de ficheros autoinstalables.

Otros también permiten incluso la gestión de los snippets existentes en Visual Studio.

La generación de un Snippet se lleva a cabo en un fichero XML y son almacenados en la ruta correspondiente a Visual Studio "Versión" / Code Snippets / Lenguaje.

A la hora de desarrollar nuestras aplicaciones podemos acceder a los "Snippets" a través de pulsar el botón secundario del ratón y la opción "Insertar Fragmento de Código". Con ello, aparece en pantalla un menú con las distintas agrupaciones de Snippets Existentes.

Los Snippets aparecen ordenados según el uso que tienen. Podemos encontrar desde como hacer un bucle hasta conocer el tamaño de los discos duros entre otras cosas.

Además de esto, con los "atajos" indicados en la generación de los snippets, se pueden escribir dichos atajos y al pulsar el "Tab", aparecerán de forma inmediata (si existe) el snippet deseado. Esto también afecta a los snippets predefinidos en el sistema.

Espero que os sirva de utilidad y si teneis algun comentario no dudeis en indicarmelo