В моем приложении есть дерево с настраиваемым средством визуализации элементов, которое в зависимости от типа данных на листе использует различные компоненты в качестве редакторов. В одном случае я пытаюсь использовать сетку данных, чтобы пользователь мог выбрать строку, которая соответствует его потребностям (необходимо отобразить несколько столбцов), т.е. похож на концепцию ComboBox.
Для этого у меня есть функция, назначенная обработчиком для itemEditBegin (для дерева), в котором я динамически создаю сетку данных, а затем использую менеджер всплывающих окон, чтобы отобразить его как (модальное) всплывающее окно. Пока все хорошо.
Однако, если вы щелкнете где-нибудь (например, кнопку прокрутки вниз в сетке данных), всплывающее окно исчезнет из-за того, что событие itemEditEnd сработало - почему?!
В другом сценарии у меня есть настройка DateField в качестве редактора, и пользователь может щелкнуть значок, чтобы вызвать DateChooser, прокрутить месяцы и т. Д. Я посмотрел код, стоящий за этим, и он использует всплывающее окно, похоже, точно так же, как мой код!
Вот код 'itemEditBegin':
dataGrid = new DataGrid();
dataGrid.dataProvider = mddTable.dataCollection;
dataGrid.editable = false;
PopUpManager.addPopUp(dataGrid, this, true);
где 'this' - компонент, используемый средством рендеринга дерева для строки. Это обработчик itemEditEnd компонента дерева, который вызывается, как только щелкается что-либо внутри сетки данных (например, строка, кнопка прокрутки вниз, разделитель столбцов и т. Д.).
Есть идеи у кого-нибудь?
Спасибо,
Mike.