De: Bernar <bernnar@gmail.com>
Para: Grupo Cooperator <cooperatorframework@egrupos.net>
Enviado: miércoles, 29 de abril, 2009 8:30:36
Asunto: [cooperatorframework] Paginacion y Ordenacion con Cooperator
Hola amigos, os escribo para contaros mi experencian en mi primera aplicacion
ASP.NET y
VB.NET, utilizando paginacion y ordenacion en un gridview
En mi caso, he creado un procedimiento almacenado para recuperar los articulos por familia de una pagina concreta:
(Esto son pruebas, no esta terminado, pero espero que os sirva.)
1. Debes activar AllowPaging a True, y controlar el evento PageIndexChanging
Dim lista As ArticuloObjectList
lista = Articulo.GetArticulosByFamilia(11, 1, 2) (*)
Dim vista As New ArticuloObjectListView(lista)
grid.DataSource = vista
Me.grid.DataBind()
2. En mi caso, he sobreescrito la clase parcial del Mapper del articulo, para disponer del metodo GetPageRowsByFamilia: Public Function GetPagedRowsByFamilia(ByVal param As String()) As ArticuloObjectList
Return GetObjectListByAnyStoredProcedure("bernar_GetPagedRowsByFamilia", param)
End Function
como trabajo con asp, hago lo mismo para los wrappers:
Namespace Wrappers
Partial Public Class ArticuloMapperWrapper
Public Function GetPagedRowsByFamilia(ByVal param As String()) As ArticuloObjectList
Return Instance().GetPagedRowsByFamilia(param)
End Function
End Class
Ahora ya dispongo de un metodo para llamar a un procedimiento almacenado desde el wrapper:
En la clase Articulo, creo el siguiente metodo:
Public Shared Function GetArticulosByFamilia(ByVal codFamilia As String, ByVal index As Integer, ByVal count As Integer) As ArticuloObjectList
Dim r As New ArticuloMapperWrapper
Dim p(2) As String
Dim t1, t2, t3 As String
t1 = codFamilia
t2 = index.ToString
t3 = count.ToString
p(0) = t1
p(1) = t2
p(2) = t3
Return r.GetPagedRowsByFamilia(p)
End Function
Este metodo es llamado en el evento grid_PageIndexChaning (*)
3. Para la ordenacion,debes controlar el evento _sorting Protected Sub grid_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles grid.Sorting
Dim lista As ArticuloObjectList
lista = Articulo.GetArticulosByFamilia(11, 1, 2)
Dim vista As New ArticuloObjectListView(lista)
vista.Sort("Nombre", True)
grid.DataSource = vista
Me.grid.DataBind()
End Sub
(Este evento esta en pruebas, evidentemente, solo ordena por <Nombre>.)
4. Este es el procedimiento almacenado que he creado.set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[GetPagedRowsByFamilia]
@idFamilia nvarchar(10),
@PageIndex int,
@PageSize int
AS
BEGIN
WITH TotalLineas AS (
SELECT ROW_NUMBER() OVER (ORDER BY Codigo ASC) AS Row,
[Codigo],
[idArticuloFamilia],
[Nombre],
[Descripcion],
[PVenta],
[Iva],
[UdCaja],
[Referencia],
[CtdMinimaVenta],
[FamiliaAux],
[dbo].[coop_ArticuloFamilia_GetDescription](idArticuloFamilia) AS ArticuloFamiliaString
FROM [dbo].[Articulo]
WHERE [idArticuloFamilia] = @idFamilia )
SELECT
[Codigo],
[idArticuloFamilia],
[Nombre],
[Descripcion],
[PVenta],
[Iva],
[UdCaja],
[Referencia],
[CtdMinimaVenta],
[FamiliaAux],
[dbo].[coop_ArticuloFamilia_GetDescription](idArticuloFamilia) AS ArticuloFamiliaString
FROM TotalLineas
WHERE Row BETWEEN (@PageIndex - 1) * @PageSize + 1 and @PageIndex*@PageSize
END
---------------------------------------------------------------------
Tu dirección de suscripción a este grupo es anonimoatacante@yahoo.es
Para darte de baja, envía un mensaje a
cooperatorframework-baja@egrupos.net
Para obtener ayuda, visita http://www.egrupos.net/grupo/cooperatorframework