2017-06-22 6 views
0

J'ai un site avec une table construite avec Dojo/DGrid.Dojo - Leave/Dismiss FilteringSelect dans DGrid sur Entrée

Certaines colonnes de la grille utilisent editor: dijit/form/FilteringSelect comme éditeur, ce qui fonctionne parfaitement. Lorsque l'utilisateur appuie sur la touche de retour, la valeur est acceptée et l'éditeur se ferme.

Autres colonnes du même grille ont un renderCell défini sur mesure, car l'URL de magasin unterdying diffère dans chaque ligne:

function myCustomRenderCell(object, item, node) { 
    node.innerHTML = '<div class="myClass"></div>'; 
    var filteringSelect = new FilteringSelect({ 
     label: 'myLabel', 
     name: 'myName', 
     displayedValue: item.myValue, 
     store: new DstoreAdapter (
      new RestMemoryStore ({ 
       idProperty: 'id', 
       target: 'myUrlToJsonData', 
      }) 
     ), 
     onChange: function(newValue) { 
      var rowData = filteringSelect.store.get(newValue); 
      var gridCell = this.domNode.offsetParent; 
      var dataCell = grid.cell(gridCell); 
      rowData.then(function(row){ 
       var eventObject = { 
        grid: this, 
        cell: dataCell, 
        oldValue: "", 
        value: row.name, 
        bubbles: true, 
        cancelable: true 
       }; 
       on.emit(dataCell.element, 'dgrid-datachange', eventObject); 
       grid.updateDirty(dataCell.row.id, 'myLabel', row.name); 
      }); 
     } 
    }, node.children[0]); 
    filteringSelect._destroyOnRemove = true; 
    filteringSelect.startup(); 
} 

Contrairement à la valeur par défaut FilteringSelect mentionne au début celui-ci ne reste pas que les coups d'utilisation la clé de retour. La valeur est traitée correctement. Mais à part appuyer sur l'onglet qui place le curseur dans l'éditeur personnalisé suivant ou à l'aide de la souris, il n'y a aucun moyen de quitter cet éditeur.

Des idées sur la façon de configurer cette version personnalisée FilteringSelect à rejeter à la sortie comme l'éditeur par défaut dans la grille?

+0

voir si vous pouvez supprimer l'accent sur le personnalisé –

+0

merci, cela a fonctionné maintenant. – Tobi

+0

désolé, reculez. J'ai essayé le morceau de code ci-dessous. cela a fonctionné tant que j'ai cliqué dans le débogueur, mais pas sans moi en cliquant autour. – Tobi

Répondre

0

essayer: ajouter un gestionnaire d'événements pour appuyer sur la touche:

onKeyPress: function(event){ 
    if (event.charOrCode == keys.ENTER) { 
     filteringSelect.set("focused", false); 
    } 
} 

Merci à Manjunatha pour le conseil utile.

+0

bon de voir que cela vous a aidé. –