viernes, 5 de noviembre de 2010

Grilla,paginado, Store procedure

Bueno, hace un buen tiempo que no me paso por acá, así que siguiendo la linea de las grillas a continuación explico como manejar una grilla con paginado de forma fácil y por lo que he leído también optima.

Para empezar, utilizaremos la base de datos Northwind, en esta existe una tabla llamada Products. vamos a generar un Store procedure que obtenga los productos que serán vistos en cada una de las paginas de la grilla:






























Como ven, el Store Procedure tiene 2 parámetros de entrada y uno de salida, a continuación explico para que es cada uno de estos parámetros:
  1. @PageStartIndex : nos sirve para saber el ultimo registro de la pagina actual.
  2. @PageSize: nos sirve para saber la cantidad de registros que serán devueltos por pagina.
  3. @ProductCount : nos sirve para devolver un contador de la cantidad total de registros existentes en la tabla Products.
ya en la lógica del Store Procedure se utiliza el Row_Number que devuelve el numero secuencial de una fila. Para mas informacion sobre esta funcion pueden visitar http://msdn.microsoft.com/es-es/library/ms186734(SQL.100).aspx .

No voy a explicar en detalle lo que hace el Store procedure, ya que no es complejo de entender, con la imagen creo que basta.

ahora pasamos a utilizar el VS2008, en este paso utilizaremos LinQ , la grilla de asp.net,y un object data source.

Con LinQ haremos lo siguiente:

1- Agregamos un archivo dbml de linq que represente nuestra base de datos nortwind.


2- Agregamos nuestra tabla Products y el Store procedure que generamos anteriormente:


en las propiedades del dbml dejamos lo siguiente:


luego en un webform agregamos nuestra grilla y object data source:


3- generamos 2 métodos públicos, uno se utilizara para llenar la grilla y el segundo para saber la cantidad total de registros en nuestra tabla Products.















En nuestro WebForm configuramos nuestro object datasource y grilla de la siguiente forma:













ahora podemos ejecutar nuestro webform y tendremos una grilla que maneja paginado por medio de un store procedure:

Bueno eso es todo, si necesitan el proyecto de ejemplo solo comenten y hagan el pedido de este.