Я хочу одну сетку выбора, сначала я не включал конфигурацию модели выбора, потому что это the default. Это отлично подходит для выбора мыши, но если я нахожу SHIFT + END
, он выбирает все записи (или PAGE UP
, HOME
или END
оказывает аналогичный эффект).предотвратить клавиатуру multiselect для gridpanels
Выбранные записи невозможно отменить выбор без перезагрузки сетки (если только я не хотел, чтобы сетка была сконфигурирована с allowDeselect: true
, которой я не занимаюсь).
Думая, что это проблема с документами ExtJS по умолчанию, я затем сконфигурировал сетку с SINGLE
явно, но все еще имел проблему.
Я проверил некоторые из их примера сетки here, и все они имеют те же проблемы - любой одиночный выбор сетки предотвратит мыши Групповое, но может быть multiselected с помощью клавиши переключения и HOME
, END
, PAGE UP
или PAGE DOWN
. И тогда невозможно, чтобы отменить выбор записей.
Кажется, это ошибка в каркасе, и я отправлю отчет, но поскольку сетки являются одним из наиболее часто используемых компонентов, я предположил, что у кого-то есть обходной путь для этого.
В отчаянии я также пробовал слушать keypress
глобально и останавливать событие, но это даже не сделает. Например, это будет войти в консоль, но это событие работает так или иначе:
Ext.getDoc().on('keypress', function(event, target) {
var key = event.getKey();
// do not allow multiple grid selection
if (event.shiftKey && (
key == event.PAGE_UP ||
key == event.PAGE_DOWN ||
key == event.HOME ||
key == event.END)) {
console.log('unsuccessfully trying to stop the event!');
event.stopEvent();
event.stopPropagation();
event.shiftKey = false;
return false;
}
});
EDIT:
Я не хочу, чтобы отключить все клавиатуры навигации с enableKeyNav: false
Я просто не хочу, чтобы MULTISELECT с клавиатура.
Я должен был быть более четким в этом вопросе. Я хочу, чтобы иметь возможность навигации с помощью клавиатуры (просто не с несколькими выборами с клавиатуры) – Geronimo
@Geronimo Я обновляю свой ответ. – Vlad
Гений! Спасибо. – Geronimo