2012-04-12 6 views
0

Ich habe ein jQueryUI Tabs-Steuerelement auf einer Webseite. Jede Registerkarte enthält ein oder mehrere Slickgrid-Gitter.Ungültiger Argumentfehler mit SlickGrid

Manchmal, aber ohne besondere Muster, die ich entdecken konnte, wenn Registerkarten zu entfernen (also Instanzen von Slickgrid entfernen), erhalte ich:

// slick.grid-2.0.merged.min.js: Microsoft JScript runtime error: Invalid argument 
Z[0].styleSheet.cssText=a.join(" ") 

die dann propogates zu

// jquery-1.7.1.min.js: Microsoft JScript runtime error: Exception occurred. 
a.execScript||function(b){a.eval.call(a,b)})(b) 

Was verursacht dieses Problem und wie kann ich es umgehen/lösen?

+0

Dieser Code würde in der Regel nur aufgerufen werden, wenn neue Instanzen von SlickGrid zu schaffen. – Tin

+0

Stellen Sie außerdem sicher, dass Sie die SlickGrid-Instanzen zerstören, bevor Sie sie löschen, indem Sie grid.destroy() aufrufen. – Tin

Antwort

0

Nach dem Kommentar von @Tin, stellte ich sicher, dass jede Instanz von SlickGrid zerstört wurde, bevor das HTML-Element, das mit dem Ersetzen durch ein Ajax-Ergebnis verbunden war.

Nutzung

Is there a way to get an instance of SlickGrid from an element

ich mit Code wie folgt endete:

initialisieren SlickGrid Beispiel:

grid = new Slick.Grid("#myGridDiv", myDataView, myColumns, myOptions); 
$('#myGridDiv').data('slickgrid', grid); 

Allgemeine Bereinigungsfunktion:

function cleanupSlickGrid() { 
    //@* Cleanup slickgrid instances. See: https://stackoverflow.com/questions/10129069/invalid-argument-error-with-slickgrid *@ 
    var grids = $('.slick'); //@* I add the class 'slick' to each grid *@ 
    jQuery.each(grids, function(i, val) { 
     var grid = $(this).data('slickgrid'); 
     grid.destroy(); 
     }); 
} 

Verwendung allgemeine Bereinigungsfunktion wie folgt aus:

$.ajax(
{ 
    url: removeUrl, 
    type: "POST", 
    success: function (data) 
    { 
     cleanupSlickGrid(); 
     $('#myDivId').html(data); 
    } 
} 
Verwandte Themen