Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.12.2012, 11:41
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 1  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
По умолчанию custom itemEditor AdvancedDataGrid

Написал свой itemEditor для AdvancedDataGrid.

В этом эдиторе есть кнопка которая грузит файл с диска на сервер и вкручивает урл в поле данных.
Проблема в том что когда я выбираю файл, выкидывается виндовый диалог выбора файлов. ДатаГрид теряет фокус. А при потере фокуса он убивает эдитор по-умолчанию.

Так вот эту проблему я решил, уже не убивает если мне не надо его убивать. Но теперь другая хрень. ДатаГрид использует ровно столько єдиторов и рендереров сколько влазит в экран. В моем случае 20 штук.
Если таблица больше 20-и - те которые не влазят в первую страницу редактируются неадекватно.

Вроде как погуглил - правильно надо не блочить закрытие эдитора как делаю я, а сохранять данные, убивать эдитор, а потом при получении фокуса опять пересоздавать его. И в него пихать новые данные.

Окай, сделал так, но проблема с 20-ю элементами всё-равно осталась. Видимо как-то неправильно создаю. Чего гриду не хватает при создании эдитора который не влазит в первую страницу.

Код покажу если надо. Просто я совсем не уверен что правильно делаю потому просто хочу спросить - а как надо? Мне кажется что проще будет этот участок переписать нежели исправить.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 31.12.2012, 12:13
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Если с эдитором, то так и надо, как в последнем варианте. Ты бы в картинках объяснил, что тебе надо и что получается.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 31.12.2012, 13:04
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 3  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Файл который открывает диалог - находится прямо в эдиторе. Получается что результат открытия файла у меня в эдиторе. В итоге я открываю файл провожу с ним манипуляции всё ок.

Во-первых я лочу эдитор от закрытия если диалог сейчас открыт.
Код AS3:
	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;
		}
	}
Потом по получении фокуса гридом обратно - удаляю старый эдитор и добавляю новый с теми же данными.
Код AS3:
private function onFocusIn(event:FocusEvent):void
			{
				if (_editorPosition)
				{
					var pos:Object = CeaUtills.cloneObject(_editorPosition);
					if(_editorInstance) createItemEditor(pos.columnIndex, pos.rowIndex);
				}
			}
Это работает если я умещаюсь в первую страницу прокрутки (с первого по 2-й элемент) а уже на 21-м вылетает какая-то внутрення ошибка грида. так как он запакован во внешний компонент я не вижу что там и как. Говорит что где-то там он нулл получил. А какой нулл я не знаю.

Добавлено через 1 минуту
Это мой первый проект на флексе, я вообще пур-ас3 пишу обычно. Так что не исключено что тут полная шляпа. Буду рад любым комментариям.
репо на битбакете

Добавлено через 5 минут
Эта схема редактирует текущую ячейку нормально. Но при переходе на другую вылетает. При условии что текущая находится вне этих 20-и строк. Ошибка где-то внутри грида в editEnd().
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 31.12.2012, 13:47
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Это работает если я умещаюсь в первую страницу прокрутки (с первого по 2-й элемент) а уже на 21-м вылетает какая-то внутрення ошибка грида. так как он запакован во внешний компонент я не вижу что там и как. Говорит что где-то там он нулл получил. А какой нулл я не знаю.
В смысле? По стеку назад пройдись и посмотри.

Можно и без editor'a обойтись. Сделай просто ItemRenderer с кнопкой (или выглядящий как кнопка), при клике на него вызывай диалог открытия файла и посылай всплывающее событие со ссылкой на item и filereference (как пример). Или прям в рендерере и меняй данные.

Или из эдитора событие посылай и не трогай onItemEditEnd.

Не понятно зачем тебе понадобился эдитор в данном случае, если он не редактирует данные.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 31.12.2012, 14:01
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 5  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
В смысле? По стеку назад пройдись и посмотри.
Весь стек внутри грида, там нету ни одной строчки моего кода.

Цитата:
Не понятно зачем тебе понадобился эдитор в данном случае, если он не редактирует данные.
Ну как это не меняет, он ссылку полученную в данные сохраняет. Плюс к этой кнопке там можно этот урл вручную вбить, не выбирая файл.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 31.12.2012, 14:40
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Открой отдельное окно и не мучайся. ItemEditor больше подходит для инлайн редактирования.
Скорее всего ты пытаешься получить несуществующий рендерер. Увы я стек телепатически получать не умею. В каком классе, в исходниках, хоть находится приведенный код?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 31.12.2012, 15:17
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 7  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Нажмите на изображение для увеличения
Название: 3IT3l2RGEI404fyOw3nw.png
Просмотров: 112
Размер:	22.9 Кб
ID:	28910
Ну так инлайн редактирование и есть) Еще одно окно я слабо представляю куда тут прикрутить. Но могу конечно вынести кнопку куда-то нафиг в тулбар, а потом руками всё делать, данные обновлять и в таком духе.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 31.12.2012, 15:20
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 8  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Цитата:
В каком классе, в исходниках, хоть находится приведенный код?
в классе расширяющем АДГ
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 31.12.2012, 15:37
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 9  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
в классе расширяющем АДГ
Я не вижу там класса расширяющего ADG?

Добавлено через 2 минуты
Что сохраняется в editedItemPosition?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 31.12.2012, 15:46
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 10  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
JsonTreeGrid.mxml

Добавлено через 46 секунд
Короче ладно, прикручу тулбар. Но вообще проблему хотелось бы решить хотя бы из-за спортивного интереса.

Добавлено через 5 минут
Цитата:
Что сохраняется в editedItemPosition?
Это переменная АДГ которая обновляется когда начали изменение. Тут хранится координата редактируемой ячейки.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:55.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.