Foros del Web » Programando para Internet » ASPX (.net) »

Obtener datos de un paginado GridView

Estas en el tema de Obtener datos de un paginado GridView en el foro de ASPX (.net) en Foros del Web. Que tal todos! Estoy trabajando en una aplicacion web en la que básicamente utilizo un GridView en el que hay un TextBox para ingresar una ...
  #1 (permalink)  
Antiguo 18/09/2009, 14:17
Avatar de AWesker  
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 27
Exclamación Obtener datos de un paginado GridView

Que tal todos!
Estoy trabajando en una aplicacion web en la que básicamente utilizo un GridView en el que hay un TextBox para ingresar una cantidad.

La cuestión es esta: en el GridView he habilitado el paginado por que así me lo piden, y necesito guardar los datos que se encuentren en el paginado actual (es decir, como el paginado tiene límite de 5 filas en el GridView, solo puedo guardar los 5 que se encuentren visible), excluyendo a los demas que se encuentren en los demás PageIndex . Además, necesito que al guardar ese rango quede excluido para volver a almacenarlo. Sería algo así:

private void ObtenerDatosPaginadoActual()
{
ValidarPageIndex()
//Aqui guardaría los datos
}

private Boolean ValidarPageIndex()
{
if(PageIndexActual==Guardado)
{
return true;
}
else
{
return false;
}
}

En resumen necesito obtener los datos que esten en el PageIndex actual y excluirlos al haber sido guardados, pero dejarlos siempre visibles...

Información adiciona: Utilizo un DataTable que me carga los datos en el GridView. El GridView tiene deshabiliada la opción de Agregar columnas, eliminar o editar.

Gracias de antemano por la ayuda!!
  #2 (permalink)  
Antiguo 18/09/2009, 14:57
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Obtener datos de un paginado GridView

los datos con los que llenas el gridview son cargados desde la base de datos?

por que si es asi seria mucho mas facil traer los datos correspondientes de la base de datos, solo la pagina que necesitas
__________________
roy rojas
Programación en Español: DotNetcr.com
  #3 (permalink)  
Antiguo 18/09/2009, 16:31
Avatar de AWesker  
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: Obtener datos de un paginado GridView

Si. Son desde la base de datos. La cuestion es que en el GridView me aparecen todos los datos a partir de un registro maestro, al cargar un maestro, se llena el GridView con todos los detalles (detalles de más de 15 filas), pero me han pedido que guarde solamente una página (un PageIndex) a la vez.
Pero gracias por la sugerencia!
  #4 (permalink)  
Antiguo 18/09/2009, 16:46
Avatar de 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
  #5 (permalink)  
Antiguo 20/09/2009, 13:36
Avatar de AWesker  
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: Obtener datos de un paginado GridView

Grandiosa idea. Se nota que SQL se te da muy bien. Intenté hacerlo así, pero el GridView no aguata la consulta, ya que tomo los datos de diversas tablas. Por eso cargaba los datos en un DataTable que traía a través de LINQ. ¿Se te ocurre otra forma? he intentado hacerlo de muchas formas, pero no logro obtener los registros de un PageIndex. Es neceario que lo haga en cuanto pueda. Gracias de nuevo royrojas por tu aporte!!!
  #6 (permalink)  
Antiguo 20/09/2009, 13:37
Avatar de AWesker  
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: Obtener datos de un paginado GridView

¿O hay alguien que tenga una idea de como hacerlo? por lo menos obtener los DataKeys. Eso sería un avance enorme...

Última edición por AWesker; 20/09/2009 a las 19:06
  #7 (permalink)  
Antiguo 21/09/2009, 17:13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Obtener datos de un paginado GridView

sdssssssssssssssssssssssssssssssssssssssssssssssss sssssssssssssssssssss
  #8 (permalink)  
Antiguo 21/09/2009, 20:49
Avatar de AWesker  
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: Obtener datos de un paginado GridView

Bueno, pensando un poco más pude lograrlo, simplemente utilice un foreach DataGridRow, automáticamente selecciona los DataKey del PagIndex actual (que cargaba en el GridView con el Id de cada detalle) y almaceno los Id's en un DataTable para después compararlos. Quizá no sea la solución más estilizada, pero funciona.

Así que el caso esta resuelto...
  #9 (permalink)  
Antiguo 30/09/2009, 08:57
 
Fecha de Ingreso: septiembre-2009
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Busqueda Respuesta: Obtener datos de un paginado GridView

OBTENER DATAKEY: int Id = int.Parse(GridView1.DataKeys[row.RowIndex].Value.ToString()); Aqui tu obtienes tu DATAKEY, recuerda que debes de agregar al GRIDVIEW el DATAKEYNAME ="ID"

Última edición por mad249; 30/09/2009 a las 09:21 Razón: SOLUCIONADO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:16.