2009-10-12 6 views
1

J'ai une Datagrid Dojo avec une des colonnes affichée comme une zone de texte par une fonction de formatage. Lorsque je clique sur la zone de texte rendue pour entrer une valeur, le curseur apparaît dans la zone de texte et le focus est immédiatement perdu (c'est-à-dire que le curseur disparaît - la frappe ne produit rien). Je dois cliquer une fois de plus sur la zone de texte pour le focus à définir - alors seulement puis-je entrer des valeurs.Impossible de définir le focus sur la zone de texte dans dojo datagrid

Est-il possible de définir le focus sur le premier clic lui-même?

Voici le code:

<table dojoType="dojox.grid.DataGrid" store="selectedItemsStore" class="resultsGridClass" jsid="selecteditems"> 
<thead> 
<tr> 
<th field="field1" formatter="renderTextBox" width="20%">Field 1</th> 
</tr> 
</thead> 
</table> 

Et voici la fonction formatter:

function renderTextBox(value, rowIndex) { 
var htmlString = "<input type='text' name= 'exp' />"; 
return htmlString; 
} 
+0

Je me demande si cela est lié à http://bugs.dojotoolkit.org/ticket/9827 - il y a une référence dans ce ticket pour une manière supportée d'incorporer les entrées de texte – peller

+0

même problème ici. est-ce que quelqu'un connaît la solution? –

Répondre

0

Essayez de régler éditable et alwaysEditing attributs true:

<th alwaysEditing="true" editable="true" field="field1" formatter="renderTextBox" width="20%" >Field 1</th> 
+0

Non. Ne marche pas. –

+0

Vous pouvez essayer de répéter le comportement à partir de cette page de test (lorsque vous appuyez sur Toggle dSingleClickEdit): http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/grid/tests/test_edit.html – ivalkeen

0

Lors de la création d'une instance de dojox.grid.EnhancedGrid, utilisez l'attribut singleClickEdit et définissez-le sur true.

Cela mettra l'accent sur la zone de texte ou tout autre widget sur le premier clic.

1
window.setTimeout(function() { 
    dijit.byId("profileGrid").scrollToRow(rowIndex); 
    dijit.byId("profileGrid").focus.setFocusIndex(rowIndex, 0); 
    dijit.byId("profileGrid").edit.setEditCell(dijit.byId("profileGrid").getCell(0), rowIndex); 
},10); 
0

Dans mon cas ci-dessous le code fonctionne parfaitement pour la zone de texte question de mise au point:

dojo.connect(this.floorTable,"onRowClick",this,function(row){    
    row.target.focus();    
}); 

this.floorTable est un objet de table.

Questions connexes