Possible problème jQuery / jqGrid dans IE8

J'ai une grille construite avec jqGrid , qui utilise la barre d'outils de recherche, un formateur personnalisé pour insérer radio boîtes radio et un gestionnaire loadComplete . Tout fonctionne bien dans FF mais quand je vais à IE8 (honte !!!), l'écran gèlerait avec les données chargées et la case Loading... sur l'écran. Je ne peux rien faire sur l'écran.

Voici mon code:

 function loadCompleteHandler(){ jQuery("#listTable").jqGrid('setGridHeight', Math.min(300,parseInt(jQuery(".ui-jqgrid-btable").css('height')))); } function radio(value, options, rowObject){ var radio = '<input type="radio" value=' + value + ' name="radioid" ondblclick="inDetail();"/>'; return radio; } function statusSelect(){ #set($select = ":$l10n.lbl_123") #foreach($se in $status_list) #set($select = $select + ";$se.getValue():$se.getValue()") #end return "$select"; } jQuery(function(){ jQuery("#listTable").jqGrid({ url: '$content.getURI("/servlet/ajax/MyServlet.json")' + '?loggedUserId=$loggedUserId&pageNo=0&locale=' + '$l10n.getLocale().toString()', datatype: 'json', mtype: 'POST', colNames:['','$l10n.lbl_copy','$l10n.lbl_476','$l10n.lbl_380', '$l10n.lbl_2547<br/>$l10n.lbl_3768','$l10n.lbl_owner','$l10n.lbl_256 $l10n.lbl_92','$l10n.lbl_1558<br>$l10n.lbl_185','$l10n.lbl_348'], colModel :[ {name:'column1', index:'column1', width:'3%', search:false, align:'center', formatter: radio, editable:false, sortable: false, resizable:false}, {name:'column2', index:'column2', width:'6%', search:false, align:'center', formatter:'checkbox', sortable: false, resizable:false}, {name:'column3', index:'column3', width:'12%', sortable: false, stype:'select', editoptions:{value: statusSelect()}, resizable:false}, {name:'column4', index:'column4', width:'17%', search:false, sortable: false, resizable:false}, {name:'column5', index:'column5', width:'10%', search:false, sortable: false, resizable:false}, {name:'column6', index:'column6', width:'13%', sortable: false, resizable:false}, {name:'column7', index:'column7', width:'13%', sortable: false, resizable:false}, {name:'column8', index:'column8', width:'12%', sortable: false, resizable:false}, {name:'column9', index:'column9', width:'14%', sortable: false, resizable:false} ], width:'768', height: 300, loadonce:true, pager: '#pagerDiv', gridview: true, rowNum:15, rowTotal: 500, sortorder: 'desc', viewrecords: true, loadComplete: loadCompleteHandler }); }); jQuery(function(){ jQuery("#listTable").jqGrid('filterToolbar',{ stringResult: true, searchOnEnter: false, defaultSearch:'cn'}); /* search strategy meaning: contains */ }); 

J'utilise Velocity, jQuery 1.4.2. IE donne une erreur d'argument invalide dans la bibliothèque jQuery à cette ligne:

  if ( set ) { style[ name ] = value; } 

Peut-être que le problème concerne jQuery dans IE8, je ne sais pas …

EDIT : données plus spécifiques ajoutées

J'utilise jqGrid 3.8.2. Le statusSelect après Velocity a traité il ressemble à ceci:

 function statusSelect(){ return ":All;status1:status1;status2:status2"; } 

Je pense qu'il n'y a pas de problème avec le transfert de données JSON puisque la grille fonctionnait auparavant dans IE8 quand il n'y avait aucun setGridHeight , loadComplete handler. J'ai également fait quelques modifications mineures que je ne peux que récurer partiellement (c.-à-d. Le redimensionnement des colonnes est désactivé). Pour des raisons de test, voici un objet JSON:

  { "page":"1", "records":2, "rows":[{"id":150,"cell":[150,false,"status1","columnData4","columndata5","columndata6","columndata7","Test1\u003cbr/\u003e\u003cspan style\u003d\u0027float:right;\u0027\u003e10.12.2010\u003c/span\u003e","columnData"]}, {"id":157,"cell":[157,false,"status2","columnData41","columndata51","columnData61","columnData71","Test2\u003cbr/\u003e\u003cspan style\u003d\u0027float:right;\u0027\u003e22.12.2010\u003c/span\u003e","columnData"]}], "total":50.0 } 

Je ne sais pas comment utiliser le paramètre total, donc je viens de déclarer une valeur arbitraire (50D). La fonction inDetail suffit de soumettre le formulaire (j'utilise le paramètre Apache Turbine ici):

  function inDetail(){ document.forms['myForm'].eventSubmit_doAction.value = 'doSomeAction'; document.forms['myForm'].submit(); } 

Je ne peux pas reproduire le problème que vous décrivez. Comment pouvez-vous voir ici, la grille peut être chargée sans aucun problème dans IE. Cela ne semble pas très bien en raison de CSS manquants, mais tout fonctionne en général. Donc, je suppose que vous avez un problème dans le code que vous ne publiez pas ici. Je vous recommande de vérifier votre page HTML dans http://validator.w3.org/ , votre test JSON résume le code http://www.jsonlint.com/ et JavaScript dans http://www.jslint.com/ .

Je ne vous recommanderais pas d'utiliser radio variable radio à l'intérieur de la fonction avec le même nom de radio . Mieux vaut choisir un autre nom. Il est préférable d'ajouter 10 comme deuxième paramètre de la fonction parseInt . Dans mes tests, votre code original fonctionnait également sans les changements de code correspondants.