Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/09/2009, 16:46
Avatar de royrojas
royrojas
 
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Obtener datos de un paginado GridView

Hola, entonces el siguiente codigo te podria servir, es un ejemplo de una funcion y procedimiento almacenado, lo explico abajo

Código:

CREATE FUNCTION [dbo].[CantidadPaginas]
(
@CantidadRegistros as decimal,
@RegistrosPagina as decimal
)
RETURNS int
AS
BEGIN

DECLARE @retorno as int
set @retorno = @CantidadRegistros / @RegistrosPagina
if  ((@CantidadRegistros / @RegistrosPagina) % 2 > 0 )
set @retorno = @retorno + 1

return @retorno

END


GO


CREATE PROCEDURE EJEMPLO_SP_PAGINA(
 @num_registros int = 100
,@num_pagina int = 1)
AS
	SET NOCOUNT ON
BEGIN

	Declare @NoRegs as int
	SET @NoRegs = @num_registros * (@num_pagina - 1)

	SELECT TOP(@num_registros)
		   [codigo_registro],
		   [descripcion]
	  FROM T_Nombre_Tabla T
	 WHERE [codigo_registro] NOT IN (
					SELECT TOP(@NoRegs) [codigo_registro]
					  FROM CRM_CLIENT_FLAG
					 ORDER BY [codigo_registro] DESC)
	 ORDER BY [codigo_registro] DESC

/* Retorna el numero total de paginas */
DECLARE @CantidadRegistros as int
SELECT @CantidadRegistros = COUNT(*) FROM T_Nombre_Tabla 
SELECT dbo.CantidadPaginas(@CantidadRegistros,@num_registros) TotalPaginas

END
La funcion CantidadPaginas va a retornar la cantidad de paginas posibles en una candidad de registros, por ejemplo se le indican que son 100 registros y se necesitan paginas de 20 registros cada una, entonces te va a retornar 5.

El procedimiento almacenado lo que hace es retornar el bloque que se necesita, volviendo al ejemplo de los 100 registros, si al SP se le indica que se quieren los registros de la pagina 4, en un bloque de 10 registros por pagina, te va a retornar los registros del 40 al 50, osea la pagina 4.

Entonces este SP te retorna dos tablas uno con los datos correspondientes y otra tabla con la cantidad de paginas que se podrian paginar con base a los parametros solicitados.

Creo que esto resuelve tu problema
__________________
roy rojas
Programación en Español: DotNetcr.com