2010-02-08 8 views
9
registriert ist

ich zur Zeit meine persönliche Website
und ein Teil meiner Website zu entwickeln habe ich ein verzerrtes Bild pr Duplizierung von Code vermeiden ...
und diese Ansicht Ich habe eine dojox.grid.datagrid ... Ich kann diese Ansicht zweimal auf der gleichen Seite aufrufen (ruban.phtml) das Problem ist, dass ich auf 1-Taste klicken, das ist der Reiz dieser Ansicht (Teilansicht) und dann klicke ich auf die 2. Schaltfläche, die die Attraktivität dieser Ansicht ist Ich habe einen Fehler:
Fehler: versucht, Widget mit ID == Raster registrieren, aber diese ID ist bereits registriertFehler: Versuchte Widget == mit ID registrieren grid1but dass id bereits

und dieses Problem zu lösen, entfernte ich die jsId das Netz gehen und ich erklärte eine globale Variable initialisiert wird, wenn die Ansicht Aufruf:

grid = dijit.getEnclosingWidget(dojo.byId("gridId1");
// soit
grid = dijit.getEnclosingWidget(dojo.byId("gridId2");

Ich habe versucht, aber ich habe immer mit dem gleichen Problem:

...... onDownloadEnd:function() {

  // Update the id of the grid 
      var nodeGrid = dojo.byId("ancienIdGrid"); 
      nodeGrid.setAttribute("id", "newIdGrid");   
      varGlobalPourId = dijit.getEnclosingWidget(nodeGrid); 

}....

Sie mir danken für die Unterstützung

Antwort

5

Dijit hält einen Hash-ID Strings zu Widgets in dijit.registry (siehe dijit/_base/manager.js) Das Aktualisieren der ID im DOM hat keine Auswirkungen auf diese Tabelle. Daher könnte ich sehen, wie es scheitern würde, wenn Sie versuchen, ein Widget mit der gleichen ID zweimal zu erstellen. Wie wäre es mit einer eindeutigen ID für jedes Raster, wenn Sie überhaupt eine ID benötigen?

4
destroy all registered id forcefully with this snippet than you go on your way!! 

var ids = ["cp1","cp2","cp3"]; 
dijit.registry.forEach(function(w){ 
    if(dojo.indexOf(ids,id)){ 
     w.destroyRecursive(); 
    } 
}); 
+0

https://bugs.dojotoolkit.org/ticket/5438 – JenonD