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;
Where exactly did you put that code? How did you modify the end of igtbl_initGrid?
We have copied the ig_common scripts for the controls that we use into our application due to numerous other fixes that we have applied to various scripts (we currently have approximately 30 patches that we apply to the scripts after each release).
This requires either specifying the scripts location in each control or, more elegantly, adding configuration entries to web.config. To do this, you need to add the following entry to the <configsections>
<section name="infragistics.web" type="System.Configuration.SingleTagSectionHandler"/>
and an entry similar to the following to the <configuration> section (adjust to suit your own directory name):
<infragistics.web javaScriptDirectory="~/ig_common/scripts/"/>
The scripts are located in the Infragistics version installation directory (i.e. C:\Program Files\Infragistics\NetAdvantage for .NET 2009.1) in either ASP.NET\CLR3.5\Scripts or ASP.NET\CLR2.0\Scripts subdirectory, depending on which framework you are targeting.
igtbl_init is in ig_webgrid.js and the modification was added immediately before the
return grid;
statement at the end of the method. i.e.
InitializeGridIds(grid); return grid;
Hopefully this helps.
Is it just me or does that function need the for loop?
I've just looked at it and it would appear to be doing nothing......correct me if I'm wrong, by all means.
Thanks for the info ^ ^. Unfortunately it didn't work for me at all, using 9.2 + hotfix at the moment and while the groups load faster than they did in 9.1, expanding a group causes serious issues, bowser locks up, when it actually renders the group, right clicking on a cell to open a menu takes forever, all the time the processor is going nuts.
I'm paging, sorting and grouping on the server, as you would imagine this is pretty quick, then when the response is sent the problems start.
Can't you just fix up the old IE6 grid for IE8? It's getting beyond the joke here, we have built 2 intranet sites around ultrawebgrids and they are now next to useless!
I've been on the forums and noone from infragistics has offered any solution, I talked to support about the issues I was having and got the usual, did you apply the hotfix? IE8's fault, etc.
The action of calling getRow initializes the row identifiers in the client, which is the primary purpose of the code.