Hi
I've the code of an old version of the infragistics suite (v2007.3) and I've found a very weird performance problem that arises when using IE8.
I'm reporting it because it is occurring also in your demo site that is using the version 2009.1, but I don't know if this problem has been solved in the hotfix you have released for the 2009.1.
The problem is in this javascript procedure: file 'ig_webgrid_dom.js', function "init" contained in object igtbl_ptsRow. The actual problem is this line of code
tr.cells[j].id = cellId.join(
"_");
That line of code (the setting of the id of a cell) is very very very slow under IE8, but has no impact with IE7.
Can you tell me whether this issue has been solved in v2009.1 hotfix?
Is the source code of the hotfix available upon buying v2009.1?
Best regards, Andrea Pirola
We ran into this issue as well, but our primary problem was the incredibly poor performance when the user performed client-side actions such as sorting or filtering (even after installing the July hotfix). Using the research by the original poster regarding the increase in performance when the table did not contain a colgroup element, we devised a workaround that causes a slight delay on the initial load, but resolves all other performance issues, including situations where the grid is contained in an Ajax update panel.
The basic approach is to save the colgroup element in the table, remove it, ask the grid to generate all row ids, then restore the colgroup element. Executing this code at the end of igtbl_initGrid handles all scenarios that we have tested. For those that are interested, here is the code that we used to work around the problem:
function InitializeGridIds(oGrid) { try { var oChild = oGrid.Element.childNodes[0]; try { oGrid.Element.removeChild(oChild); for (var nI = 0; nI < oGrid.Rows.length; nI++) { var oRow = oGrid.Rows.getRow(nI); } } finally { oGrid.Element.insertBefore(oChild, oGrid.Element.childNodes[0]); } } catch (ex) { alert(ex.message); }}
We modified the end of igtbl_initGrid as follows:
igtbl_getElementById(grid.ClientID).control = grid; // Ensure the grid ids are properly initialized InitializeGridIds(grid); return grid;
Hi..
calling "InitializeGridIds" in InitGrid works great.
But the performance is already fine if grid has lesser number of rows (50-70 rows)... if grid has > 200-400 rows then the solution you have provided takes considerable amount time (in loop and assigning ids to cells) and grid loads after a delay of 30-40 seconds.
Is there any way we can assign "CellId" from server side at databind? (i know cellid assigned dynamically when you click on cell)
Where exactly did you put that code? How did you modify the end of igtbl_initGrid?