I have a page with pretty extensive Hierarchical grid. It takes about 30 - 40 seconds to load on the browser end.
One way to improve loading time is to create paging.. what are other methods to improve performance/shorten loading time ?
Thanks.
Hello mcseidel,
Thank you for contacting Infragistics.
Concerning performance of the WebHierarchicalDataGrid I recommend you see the following behaviors:
Paging: http://help.infragistics.com/Help/NetAdvantage/ASPNET/2012.2/CLR4.0/html/WebHierarchicalDataGrid_Enabling_Paging.html
Load On Demand: http://help.infragistics.com/Help/NetAdvantage/ASPNET/2012.2/CLR4.0/html/WebHierarchicalDataGrid_Load_On_Demand.html
Please let me know if you have any further questions concerning this matter.
Sincerely, Mike P. Developer Support Engineer II Infragistics, Inc. www.infragistics.com
I am following up to see if the information provided has resolved this matter.
Please let me know if I may be of further assistance with this matter.
Thank you for the update. I have a few follow up questions concerning this matter. Where are you getting your data from? Are you storing on the server? Instead of the source can you provide me with the markup for grid so I can see what properties you are using and how you are setting them?
Data get stored in the session : retrieved once and maintained there until saved... the big grid on the first tab also some filtering capabilities implemented, the rest seems like minor addition, here is the binding on the page load and the mark up page attached:
if (IsPostBack) { if ((ExhibitLR2MasterDS)Session["ExhLR2MasterDS"] != null) { // ExceptionUtility.LogException("Due~~PageLoad PostBack, Data exists: " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt")); ExhibitLR2MasterDS MasterDS = (ExhibitLR2MasterDS)Session["ExhLR2MasterDS"]; ExhibitLR2MasterDS.ExhLR2MasterTblDataTable MstTbl = MasterDS.ExhLR2MasterTbl; uc_top_refresh.wddTopAcctFilters.AutoPostBackFlags.ValueChanged = Infragistics.Web.UI.AutoPostBackFlag.On; string filter = uc_top_refresh.wddTopAcctFilters.SelectedValue; if (hdnAccountFilterVal.Value != filter) { hdnAccountFilterVal.Value = filter; whdg.GridView.ClearDataSource(); whdg.GridView.Rows.Clear(); MstTbl.DefaultView.RowFilter = filter; whdg.DataSource = MasterDS; // (ExhibitLR2MasterDS)Session["ExhLR2MasterDS"]; whdg.DataBind(); whdg.GridView.RequestFullAsyncRender(); } else { MstTbl.DefaultView.RowFilter = hdnAccountFilterVal.Value; whdg.DataSource = MasterDS; // (ExhibitLR2MasterDS)Session["ExhLR2MasterDS"]; whdg.DataBind(); } ExhibitLR2DetalsDS ExhLR2DetailsDS = (ExhibitLR2DetalsDS)Session["ExhLR2DetailsDS"]; wdgSrv.DataSource = ExhLR2DetailsDS.SurveyTbl; wdgSrv.DataBind(); // SynchronizedExtra(); //BindExtra(); }
Thank you for the update. It seems that instead of attaching your markup you have attached the cs codebehind file. Can you please attach the markup so I can look at what properties you use on your grid? Do you set the EnableDataViewState property of the gird?
Sorry for mistake, attached markup file, EnabledDataViewState set to default value : False
Thank you for the update. I have taken a look at your markup and I have a few follow up questions concerning this matter. Have you tried setting the InitialDataBindDepth to -1? This will make sure all the records load initially instead of on expand. Have you tried setting EnableAjax to true? This will make it so when the grid causes a postback it will postback for just the grid and not the entire page. Do you have any other browser options than IE8? Like IE9 or a newer browser?
While trying to avoid premature optimization scenarios I'm trying to find a culprit... I do not believe that it is network, running browser on the server producing almost the same results.... as for other controls - page has some but it's just another grid with really small data set and drop downs and text boxes ( you've seen the page ), what I'll do when chance is create page with just this grid and see how it perform... we can close this thread for now but rather get back to it when page with single grid results will be available .
Thank you for the update. Performance can depend on a few things amount them are the browser, for example IE8 has issues with JavaScript and that can cause slow down. What other elements you have on the page also makes a difference if you have a lot of tables or a few large tables this can also cause some slowdown. Your network also has an impact on this, I would recommend using IE dev tools or something similar to profile you website and see what kind of responses you are getting. For displaying data you have to remember that each cell in a row is a record and a separate element that needs to be rendered so the number or records you have showing is the number of columns you have multiplied by the number of rows. I have created WebHierarchicalDataGrid’s with more records you have displaying and have run it in IE8 and haven’t seen issues with performance. This leads me to believe your issue is related more to your network and the other items/elements you have on your page.
I still did not have a chance to get back to this part of the project... Here I would like to know a bit more about paging :
Say I have 1500 child records about 100 per child grid. Say I page by 10 records every child grid. So the child grid will be bind to 100 records, only 10 displayed at once, when I click next then 10 other records displayed ... is that 10 records choose when grid gets bound... so 90 records not getting rendered to the browser and only 10 do...
If ajax is enabled so only partial update happen and if it is only 10 records why it does take so long ( about 8 sec ) ?
I am following up to see how you are progressing with this matter.
Thank you for the update. I will follow up in a few business days to see how you are progressing with this matter.