ExtJS6: как предотвратить прокрутку строк сетки в фокусе при нажатии

У меня есть сетка с моделью выбора флажков и высокими ячейками из-за пользовательских средств визуализации html. Проблема заключается в том, что при щелчке по любой ячейке сетка дергается, потому что выбранная ячейка прокручивается в фокусе.

Вот игра с проблемой, попробуйте сначала вручную прокрутить таблицу наполовину, а затем щелкнуть ячейки, чтобы увидеть скачок сетки (это не соответствует, возможно, придется попробовать несколько раз): https://fiddle.sencha.com/#view/editor&fiddle/1vma

Есть ли способ отключить фокусировку строки по щелчку или отключить выбор строки по щелчку, если это основная причина (поэтому вам придется использовать флажки для выбора строк).


person serg    schedule 16.05.2017    source источник


Ответы (3)


Если ваша строка сетки содержит текст, который необходимо редактировать/выбирать, вы можете использовать:

viewConfig: {
    navigationModel: {}
}
person Kevin Lee    schedule 25.05.2017
comment
Спасибо, похоже, это было бы лучшим решением. Знаете ли вы о каких-либо недостатках пустого navigationModel? Не удается найти это свойство, упомянутое в документах. - person serg; 26.05.2017
comment
Модель навигации была добавлена ​​для соответствия ARIA и прослушивает определенные ключевые события (например, стрелки вверх и вниз) и перемещает фокус на текущий выбранный элемент, добавляя свойство focusCls. Он также прослушивает события кликов, поэтому сетка прыгает, когда вы нажимаете на свои ячейки. Он определен в Ext.view.Table, из которого расширяется Ext.grid.panel. Если его оставить пустым, навигация по ключевым событиям, таким как стрелки вверх и вниз, будет отключена. Вот документы docs.sencha.com/extjs/ 6.5.0/classic/ — Кевин Ли 10 минут назад - person Kevin Lee; 27.05.2017

Я обнаружил, что возвращается false из "beforecellmousedown" прослушиватель событий предотвращает поведение, которого вы пытаетесь избежать.

listeners: {
    beforecellmousedown: function () {
        return false;
    }
}

Вот скрипка: https://fiddle.sencha.com/#view/editor&fiddle/1vq3

person scebotari66    schedule 19.05.2017

Предложенные ранее ответы работают только для Modern Toolkit. Для Classic этот код помогает:

listeners: {
    cellclick: function () {
        this.blur();
    }
}
person Dmitry Maranik    schedule 02.04.2019