Dgrid set focus on cell

http://stackoverflow.com/questions/12216280/dgrid-set-focus-on-cell

by phusick

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/claro/claro.css">
<script src="https://cdn.rawgit.com/phusick/cdn/jsfiddle/amd-packages.js"></script>
<div id="grid"></div>

CSS

body {
    padding: 30px;
    font-family: sans-serif;
    font-size: 11px;
}

#grid {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    height: auto;
}

JavaScript

require([
    "dojo/_base/declare",
    "dojo/_base/lang",
    "dojo/aspect",
    "dojo/keys",
    "dojo/store/Memory",
    "dgrid/Grid",
    "dgrid/Selection",
    "dgrid/Keyboard",
    "dgrid/CellSelection",
    "dgrid/editor",
    "dijit/form/TextBox",
    "data/dtuned",
    "dojo/domReady!"
], function(
    declare,
    lang,
    aspect,
    keys,
    Memory,
    Grid,
    Selection,
    Keyboard,
    CellSelection,
    editor,
    TextBox,
    data
) {
    
    var createEditor = function(field) {
        return editor({
            field: field,
            editor: TextBox,
            editOn: "dblclick",
            autoSave: true,
            //dismissOnEnter: false            
        });        
    }
    
    var grid = new declare([Grid, Selection, Keyboard, CellSelection])({
        selectionMode: "single",        
        columns: {
            Name: createEditor("Name"),
            Artist: createEditor("Artist"),
            Genre: createEditor("Genre")   
        }
    }, "grid"); 
    
    grid.renderArray(data.items);
       
    aspect.after(grid, "edit", function(promise, cellNode) { //return;
        
        if(promise === null) return;
        
        promise.then(function(widget) {
            if (!widget._editorKeypressHandle) {
                widget._editorKeypressHandle = widget.on("keypress", function(e) {
                    
                    for (var rowId in grid.selection) { break;}                      
                    for (var columnId in grid.selection[rowId]) { break;}

                    if(e.charOrCode == keys.TAB) {
                        e.preventDefault();                
                        var cellEdited = grid.cell(rowId, columnId);                    
                        var cellToEdit = grid.right(cellEdited, 1); 

                        if(cellEdited.row.id == cellToEdit.row.id
                           && cellEdited.column.id == cellToEdit.column.id
                          ) {
               ...