|
|
|||||
custom itemEditor AdvancedDataGrid
Написал свой itemEditor для AdvancedDataGrid.
В этом эдиторе есть кнопка которая грузит файл с диска на сервер и вкручивает урл в поле данных. Проблема в том что когда я выбираю файл, выкидывается виндовый диалог выбора файлов. ДатаГрид теряет фокус. А при потере фокуса он убивает эдитор по-умолчанию. Так вот эту проблему я решил, уже не убивает если мне не надо его убивать. Но теперь другая хрень. ДатаГрид использует ровно столько єдиторов и рендереров сколько влазит в экран. В моем случае 20 штук. Если таблица больше 20-и - те которые не влазят в первую страницу редактируются неадекватно. Вроде как погуглил - правильно надо не блочить закрытие эдитора как делаю я, а сохранять данные, убивать эдитор, а потом при получении фокуса опять пересоздавать его. И в него пихать новые данные. Окай, сделал так, но проблема с 20-ю элементами всё-равно осталась. Видимо как-то неправильно создаю. Чего гриду не хватает при создании эдитора который не влазит в первую страницу. Код покажу если надо. Просто я совсем не уверен что правильно делаю потому просто хочу спросить - а как надо? Мне кажется что проще будет этот участок переписать нежели исправить.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Файл который открывает диалог - находится прямо в эдиторе. Получается что результат открытия файла у меня в эдиторе. В итоге я открываю файл провожу с ним манипуляции всё ок.
Во-первых я лочу эдитор от закрытия если диалог сейчас открыт. private function onItemEditEnd(event:AdvancedDataGridEvent):void { var data:NodeModel = event.itemRenderer ? event.itemRenderer.data as NodeModel : null; if (event.currentTarget.itemEditorInstance.wait) { event.preventDefault(); if (event.reason == DataGridEventReason.OTHER)// этот ризон при потере фокуса приходит. { _editorInstance = itemEditorInstance; _editorPosition = editedItemPosition; } } } override public function destroyItemEditor():void { if (_editorInstance && _editorInstance.wait) { return; } else { if(itemEditorInstance) super.destroyItemEditor(); _editorInstance = null; } } private function onFocusIn(event:FocusEvent):void { if (_editorPosition) { var pos:Object = CeaUtills.cloneObject(_editorPosition); if(_editorInstance) createItemEditor(pos.columnIndex, pos.rowIndex); } } Добавлено через 1 минуту Это мой первый проект на флексе, я вообще пур-ас3 пишу обычно. Так что не исключено что тут полная шляпа. Буду рад любым комментариям. репо на битбакете Добавлено через 5 минут Эта схема редактирует текущую ячейку нормально. Но при переходе на другую вылетает. При условии что текущая находится вне этих 20-и строк. Ошибка где-то внутри грида в editEnd().
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Цитата:
Можно и без editor'a обойтись. Сделай просто ItemRenderer с кнопкой (или выглядящий как кнопка), при клике на него вызывай диалог открытия файла и посылай всплывающее событие со ссылкой на item и filereference (как пример). Или прям в рендерере и меняй данные. Или из эдитора событие посылай и не трогай onItemEditEnd. Не понятно зачем тебе понадобился эдитор в данном случае, если он не редактирует данные.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Цитата:
Цитата:
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Открой отдельное окно и не мучайся. ItemEditor больше подходит для инлайн редактирования.
Скорее всего ты пытаешься получить несуществующий рендерер. Увы я стек телепатически получать не умею. В каком классе, в исходниках, хоть находится приведенный код?
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Ну так инлайн редактирование и есть) Еще одно окно я слабо представляю куда тут прикрутить. Но могу конечно вынести кнопку куда-то нафиг в тулбар, а потом руками всё делать, данные обновлять и в таком духе.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
JsonTreeGrid.mxml
Добавлено через 46 секунд Короче ладно, прикручу тулбар. Но вообще проблему хотелось бы решить хотя бы из-за спортивного интереса. Добавлено через 5 минут Цитата:
__________________
Кто к нам с чем для чего - тот у нас того от того. |
Часовой пояс GMT +4, время: 09:58. |
|
« Предыдущая тема | Следующая тема » |
|
|