asp.net - Performance Issues loading large data set into c# GridView -
ok,
been testing relatively small data sets gridview, , has worked fine. however, i've moved proper uat , have tried load 17,000 records grid, has brought web app grinding halt.
basically, user logs in, , upon validation data grids loaded, 1 of contains 17k records. until loads end user left handing on logon page. need fix it.
the code grids is:
datatable dtvaluedatecurrency = null; sqlconnection conn = new sqlconnection(webconfigurationmanager.connectionstrings["reporting"].connectionstring); using (conn) { conn.open(); //load other grid data using (sqldataadapter sqladapter = new sqldataadapter(tsql1, conn)) { dtvaluedatesummary = new datatable(); sqladapter.fill(dtvaluedatesummary); grdvaluedatesummary.datasource = dtvaluedatesummary; grdvaluedatesummary.databind(); } }
is there way increase load times? pagination isn't option, i'm taking care of jquery.
loading 17,000 records in 1 query what's killing you. highly suggest paging gridview.
first need alter stored procedure follows.
alter procedure [dbo].[sometable_getpagedresults] ( @startrowindex int, @maximumrows int ) set nocount on select rownum, [id], [foo], [bar] (select [id], [foo], [bar], row_number() over(order [id] desc) rownum dbo.[sometable] t) derivedtablename rownum between @startrowindex , (@startrowindex + @maximumrows)
now have pageable query.
you want query complete row count.
alter procedure [dbo].[sometable_getrowcount] set nocount on return (select count(id) totalrecords sometable)
you'll bind grid every time change page.
protected void gridview1_pageindexchanging(object sender, gridviewpageeventargs e) { gridview1.pageindex = e.newpageindex; bindgrid(); // whatever method call bind data , execute stored procedure. }
and bindgrid()
method call 2 stored procedures (one complete row count, , 1 results pertaining current page)
Comments
Post a Comment