Hola. Si el resultado de tu consulta es un set de datos igual para todos los usuarios o el resultado de una consulta simple sobre una sola tabla o dos tablas (por ejemplo, Ciudades del mundo filtradas por País) lo que podés hacer es llenar un dataset, especificándole un index donde convenga y colocarlo disponible para todos (por ejemplo, en un singleton, cache, application, etc) y que todas las grillas consulten ahí.
Si por el contrario tu set de datos es el resultado de una consulta compleja con cinco JOINS entre cinco tablas de 50.000 registros cada una, no hagas eso. En ese caso, paginar en la base es una buena opción (te recuerdo que en este caso vas a estar rehaciendo la consulta en cada petición también). Yo no lo estoy haciendo porque el método que conozco es algo específico a MS SQL Server (sobretodo en 2005 que es nativo) tirándole un índice a la consulta para paginar y estoy tratando que las clases de mi biblioteca tengan un acceso a datos más portable a distintos motores. Lo que estoy haciendo es hacer la consulta cada vez y devolver un set de resultados limitado (por ejemplo las primeras 5000 coincidencias) y paginar en base a ellos. En realidad traigo las primeras 5001 y pregunto si hay más de 5000 registros. En ese caso le aviso al usuario que se excluyeron algunos resultados de la búsqueda y le recomiendo que refine la misma. Saludos Leonardo _____ De: Diego Jancic [mailto:[EMAIL PROTECTED] Enviado el: Miércoles, 07 de Marzo de 2007 12:20 p.m. Para: [email protected] Asunto: [puntonet] Paginar el Datagrid Hola, No esta mal que en cuando cambies la pagina rehagas la consulta... pensa que si lo guardas en la Session estas consumiendo memoria en el Server y si lo guardas en el Viewstate estas incrementando el trafico en la red... Para evitar hacer 2 consultas cuando cambias de pagina (una en el page_load y otra en el PageIndexChanged) lo que podes hacer es simplemente hacer un DataBind() en el evento PageIndexChanged... En caso de que tengas mucha informacion podrias paginar la informacion por sql server, pero ademas de ser complicado no suele ser util ya que al usuario le resulta imposible leer 50 mil registros (Eso me lo enseño Jose Mariano Alvarez ;) )... Supongo que deberias pensar en tu escenario y decidir que te conviene.. si estas en una LAN no muy sobrecargada y el servidor es una pentium 2, lo mas probable es que te convenga guardar la info en el viewstate... Caso contrario, si tus clientes se conectan mediante Modem a un servidor muy bueno, rehace la consulta o guarda la info en Session, pero nunca guardes en Viewstate... Saludos, Diego On 3/7/07, Marcelo P <[EMAIL PROTECTED]> wrote: Buenos días listeros Me encuentro con una aplicación ASP.NET <http://asp.net/> que tiene un Datagrid , y posee paginación. El tema es que en el evento PageIndexChanged , va a una función que trae los datos , por ende cada vez que pagina , si bien lo hace correctament, vuelve a realizar toda la consulta. Como se podría evitar esto ? , yo pense en poner en una variable se session el dataset , asi lo lleno una sola vez y luego por cada paginación solo lo haría sobre el dataset, pero no se como hacerlo o capaz que hay otra forma. Saludos _____ Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas, está en Yahoo! Respuestas (Beta). Probalo ya! <http://ar.answers.yahoo.com/>
