I have a major problem. We have a asp.net application that has this report that shows about 1000 rows as of right now and can grow up potentially up to 20,000. Dont ask me why, but out client does not like paging and does not like filtering, they like to see everything on a single page. Our obvious problem is the load its putting on the server, in terms of memory (also the factor that the client browser may crash as well).
My question is: If I provide a custom desktop application only for this report, that can display thousands and thousands of rows (through web services or remotting), would it clog up the server? On the server the worker process of the IIS basically eats up memory in case of a the asp.net application, but if I have this desktop app running seperating calling the same data base on the application server, would this solve the memory problem?
Try using a lazy-loading grid such as the jqGrid: Look at the third link [virtual scrolling] on this page:
http://www.trirand.net/demoaspnet.aspx
The grid uses ajax to only load the data that is visible on the page for the particular scroll position. Not a pger control in sight. Nice if you have to have this as an ASP.NET page.
Otherwise, @jmein's suggestion to make it a download is a good one. Just stream the report to the Response stream, using an appropriately sized buffer.
Also, read up on the use of IEnumerable<T>
and the yield return
statement to minimize the amount of data that you are loading into memory for streaming in the response.