Как сосредоточиться на первой ячейке новой строки в dojox.grid.DataGrid - PullRequest
4 голосов
/ 22 марта 2012

Я добавляю новую пустую строку в dojox.grid.DataGrid и хочу сосредоточиться на первой ячейке новой строки.

Я добавляю строку, вызывая:

var new_row = {},  
attributes = store.getAttributes( items[0] );

dojo.forEach( attributes, function( attribute )
{                   
    dojo.forEach( attributes, function( attribute )
    {
        new_row[ attribute ] = null;
    } );

} );

store.newItem( new_row );

Я полагаю, что следующий код сделает фокусировку:

grid.focus.setFocusIndex( row_index, 0 );
grid.edit.setEditCell( grid.focus.cell, row_index );

Но я не могу понять, как вызывать этот код только после повторной визуализации сетки.Я думаю, мне нужно подключиться к событию.Тем не менее, я не вижу вероятного события для использования.onNew (), кажется, вызывается перед добавлением новой строки.

Вот JSFiddle, который подходит как можно ближе к решению.http://jsfiddle.net/xDUpp/ (закомментируйте строку, помеченную для редактирования и добавьте новую строку)

Спасибо

1 Ответ

7 голосов
/ 03 апреля 2012

Какая версия Dojo вас интересует?

API Dojo отличается в разных версиях.в этом вопросе.

Посмотрите на: http://jsfiddle.net/keemor/xDUpp/11/

После того, как хранилище изменено, сетке нужно немного времени для восстановления, поэтому setFocusIndex и setEditCell также должны быть отложены для работы:

store.onNew = function( new_item ) {
    var rowIndex = new_item._0;                    
    window.setTimeout(function() {
        grid.focus.setFocusIndex( rowIndex, 0 );
        grid.edit.setEditCell( grid.focus.cell, rowIndex );
    },10);    

};

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...