Jump to content

Recommended Posts

Posted

Добрый день!

Sherzod у меня стоит задача сделать чтобы с помощь кнопок вверх или вниз в режиме редакции перемещаться на строку вверх или вниз

Я нашел код который частично это делать с помощью Enter, т.е. перемещает только на нижнюю строку

 

Я модернизировал код под свою задачу, работает хорошо но заметил что при перемещении на строку, к примеру вниз, фокус остается на той строке с которой начал

Что делаю, выбираю строку нажимаю Enter, далее перемещаюсь с помощью кнопки вниз, после опять нажимаю Enter, чтобы выйти из редакции, а фокус остался на том месте откуда начал перемещение.

Хочется чтобы фокус появлялся на новой строке,  что я сделал не так ?

function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts)
{
    var grid = sender;
    for (var i = 0; i < columns.length; i++) 
    {
        if (columns[i].getEditor()) 
        {
            columns[i].getEditor().on('specialkey', function(field, e) 
            {
                if (e.getKey() == e.UP || e.getKey() == e.DOWN) 
                {
                    e.stopEvent();
                    var store = grid.getStore();
                    var selModel = grid.getSelectionModel();
                    var selectedRecord = selModel.getLastSelected();
                    var recordIndex = store.indexOf(selectedRecord);
                    if (e.getKey() == e.UP)
                      recordIndex = recordIndex - 1;
                    else
                      recordIndex = recordIndex + 1;
                    var nextRecord = store.getAt(recordIndex);
                    if (nextRecord) 
                    {
                        selModel.select(nextRecord);
                        if (grid.editingPlugin && grid.uniRow && grid.uniCol)
                        {
                          var _row = grid.uniRow;
                          var _col = grid.uniCol;
                          setTimeout(function()
                          {
                            grid.editingPlugin.startEdit(_row, _col);
                          }, 10);
                        }
                    }
                }
            })
        }
    }

}

версия uni-1.95.0.1603 

 

 

Posted
1 minute ago, Sherzod said:

Добрый день @AlexanderP

Вам также следует задействовать navigationModel, чтобы правильно обновлялся фокус при переходе.

Хорошо, попробую разобраться

Posted
2 hours ago, AlexanderP said:

Хорошо, попробую разобраться

Sherzod спасибо за наводку, вроде как получилось, добавил выделенную строку

а если закомментировать setTimeout, то это когда нужно выйти из редакции, если переходим на новую строку

function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts)
{
    var grid = sender;
    for (var i = 0; i < columns.length; i++) 
    {
        if (columns[i].getEditor()) 
        {
            columns[i].getEditor().on('specialkey', function(field, e) 
            {
                if (e.getKey() == e.UP || e.getKey() == e.DOWN) 
                {
                    e.stopEvent();
                    var store = grid.getStore();
                    var selModel = grid.getSelectionModel();
                    var selectedRecord = selModel.getLastSelected();
                    var recordIndex = store.indexOf(selectedRecord);
                    if (e.getKey() == e.UP)
                      recordIndex = recordIndex - 1;
                    else
                      recordIndex = recordIndex + 1;
                    var nextRecord = store.getAt(recordIndex);
                    if (nextRecord) 
                    {
                        selModel.select(nextRecord);
                        if (grid.editingPlugin && grid.uniRow && grid.uniCol)
                        {
                          var _row = grid.uniRow;
                          var _col = grid.uniCol;
                          setTimeout(function()
                          {
                            grid.editingPlugin.startEdit(_row, _col);
                          }, 10);

                          sender.getView().getNavigationModel().setPosition(_row, _col);
                        }
                    }
                }
            })
        }
    }

}

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...