2010-02-08 14 views
9

Attualmente sto sviluppando il mio sito personale
e una parte del mio sito ho una visione distorta pr evitare la duplicazione di codice ...
e questo view Ho un dojox.grid.datagrid ...
Posso chiamare questa vista due volte nella stessa pagina (ruban.phtml) il problema è che clicco su 1 pulsante che è il fascino di questa vista (vista parziale) e poi faccio clic sul secondo pulsante che è il fascino di questa vista. Ho un errore:
Errore: Ho cercato di registrare il widget con id == griglia ma quell'ID è già registratoErrore: Ho cercato di registrarsi widget con ID == grid1but che id è già registrato

e per affrontare questo problema, ho rimosso il jsId camminare griglia e ho dichiarato una variabile globale viene inizializzata quando si chiama la vista:

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

ho provato ma ho sempre con lo stesso problema:

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

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

}....

grazie per avermi aiutato

risposta

5

Dijit mantiene un hash di id stringhe ai widget in dijit.registry (vedi dijit/_base/manager.js) L'aggiornamento dell'ID nel DOM non ha effetto su quella tabella, quindi ho potuto vedere come avrebbe fallito se si tentasse di creare un widget con lo stesso ID due volte. Che ne dici di generare un ID univoco per ogni griglia, se hai bisogno di un ID?

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

Problemi correlati