Gridview. Introducción

El GridView es un nuevo control de ASP.NET 2.0 que sustituye al DataGrid de las versiones previas. Se trata de un control muy poderoso, con muchas funcionalidades que nos van a hacer la vida mucho más fácil.

La idea es mostrar por pantalla un listado de lo que sea. Por ejemplo, en nuestra sección Todos los artículos, tenemos un gridview donde se listan todos los artículos publicados hasta el momento.

Pero vayamos poquito a poco. Os presento al GridView:

gridview.aspx
        <asp:gridview runat="server" ID="GridView1">
        </asp:gridview>


De momento este GridView no haría absolutamente nada, pues en ningún momento le hemos dicho de dónde tiene que coger los datos que debe de mostrar. Esto es importante, pues cabe tener claro que el GridView por sí solo no sabe hacer nada, simplemente es un control que gestiona los datos que le dan y es capaz de hacer con ellos cosas como ordenarlos o paginarlos, así como sabe (si se lo decimos) con quién tiene que hablarse en caso de que queramos modificar, borrar o elegir una columna.

Por tanto entre los datos que hay en la BBDD y el GridView debe haber algún intermedio... y tenemos varias opciones, pero sin duda las más destacados son el SqlDatasource y el ObjectDataSource. Ambos son los encargados de coger los datos de la BBDD y proporcionarlos a los controles que enseñan datos al usuario, como por ejemplo el datalist, el repeater, formview... y nuestro gridview.

Un ejemplo sencillito:

gridview.aspx
    <asp:GridView ID="GridView1" DataSourceID="SqlDataSource1" runat="server" />
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        SelectCommand="SELECT Titulo, Texto, Autor, Id FROM miForo" ConnectionString="<%$ ConnectionStrings:Pubs %>" />


Sólo con estas dos líneas de código, el GridView muestra un listado con todos los datos de nuestra tabla llamada miForo. Lo que sucede es que el SqlDataSource1 ejecuta la sentencia SQL "SELECT Titulo, Texto, Autor, Id FROM miForo", conectándose a la base de datos mediante el ConnectionString llamado Pubs definido en el apartado connectionStrings de nuestro archivo web.config, que tendrá un aspecto como este:

web.config
  <connectionStrings>
        <add name="Pubs" connectionString="EscribirAquíLaConnectionString" providerName="System.Data.SqlClient"/>
    </connectionStrings>


Pero no nos vayamos por las ramas. Hemos quedado que el SqlDataSource sabe recoger los datos, pero, ¿Cómo se los pide el GridView al SqlDataSource? Lo hace con el atributo DataSourceID, que como veis apunta a SqlDataSource1.

Ahora ya existe esa figura que proporciona los datos al GridView, y como no le damos ninguna otra instrucción lo que va a hacer éste es mostrarnos por pantalla un listado de todos los registros con los campos de miForo.

El problema es que nosotros puede que no queramos que nos muestre todos los campos, probablemente nos interese que nos muestre sólo el Título, el Autor, un previa con los primeros 200 caracteres del texto, que no nos muestre el campo Id, y que además el Título sea un enlace hacia otra página.

Pero no sólo eso, también vamos a querer
- Borrar algunos registros y modificar algunos campos.
- Paginar y ordenar el listado.
- Obtener los datos NO desde sentencias SQL, sino de otros dos modos: mediante procedimientos almacenados y mediante una clase que nos hayamos creado nosotros.

Pues bien, todos esos aspectos son los que vamos a tratar en sucesivos artículos, de modo que os aconsejo que estéis atentos