Перетащите в Itemselector extJS

Как отключить элементы (см. Вложение) в Itemselector? Я хочу отключить некоторые элементы в поле источника при перемещении элемента в поле назначения. Не могли бы вы помочь мне в этом? ПРИЛОЖЕНИЕ - Изображение

Я много искал и применял все возможное. Я не нашел пути возможного.

Поскольку нет возможности отключить по умолчанию (насколько я знаю), я удаляю элементы в списке и добавляю снова при необходимости. Здесь у меня есть сомнения. Пользователь может перетащить слева и опустить его справа или он может перетащить справа и опустить его слева. Как узнать откуда он тащит? Есть ли какой-либо метод или функция для определения местоположения источника?

1 ответ

Решение

К сожалению, это требует некоторой ручной работы, потому что отключение записей в сетках, комбинированных списках и т. Д. Не поддерживается "из коробки" ExtJS.

Я описал здесь, как создать комбинированный список с отключенными записями. Поскольку выпадающий список и селектор предметов оба полагаются на boundlist под их капюшоном это пригодится.

Как вы можете найти в исходном коде ItemSelectorимеет два свойства, fromField а также toField, которые содержат два multiselect компоненты. Вы можете прикрепить события к этим спискам или их соответствующим boundlist,

Быстрая скрипка, которая показывает, как сделать серым отключенные элементы и как предотвратить перетаскивание отключенных элементов: https://fiddle.sencha.com/

Чего не хватает, так это того, что кнопка не проверяет, отключены ли записи перед добавлением, вы должны переопределить ItemSelector's onAddBtnClick метод для этого. Это гораздо проще, если вы извлекаете новый пользовательский компонент из ItemSelector, чем в моей быстрой и грязной скрипке. Поэтому я настоятельно рекомендую вам определить свой собственный компонент, производный от ItemSelector.

Другие вопросы по тегам