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

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

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

Регистрация: Apr 2012
Сообщений: 32
По умолчанию Обратная связь между dataProvider и DataGrid

Здравствуйте! Есть у меня ArrayCollection
Код AS1/AS2:
var initDG2:ArrayCollection = new ArrayCollection([
{Column1:'x11', Column2:'x12', Column3:'x13'}
{Column1:'x21', Column2:'x22', Column3:'x23'}
{Column1:'x31', Column2:'x32', Column3:'x33'}
]);
И есть DataGrid, для которого этот ArrayCollection - поставщик данных.
Код:
<mx:DataGrid id="myGrid2" dataProvider="{initDG2}" editable="true" selectable="true">
Пользователь может вносить изменения в таблицу. Как можно сделать, чтобы эти изменения сохранялись в initDG2? Т.е. при изменении текста в ячейке изменялся соответственный элемент в ArrayCollection.
Спасибо большое.

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
1. Кажется у вас в синтаксисе ошибка - объекты нужно через запятую.
2.
Код AS3:
[Bindable] private var initDG2:ArrayCollection = new ArrayCollection...........
3. Примерно так:
Код AS3:
initDG2.setItemAt({Column1:'x11', Column2:'x12', Column3:'x13'}, myGrid2.selectedIndex);
__________________
In Code We Trust

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

Регистрация: Apr 2012
Сообщений: 32
Спасибо. Уважаемый Astraport, не могли бы Вы посмотреть следующую тему
http://flasher.ru/forum/showthread.php?t=179022
Там вопрос о повороте HeaderText в DataGrid.
Спасибо ещё раз.

Добавлено через 51 час 13 минут
Извините, Astraport. А если изменяется только один элемент, т.е. только в одном Column, то как делать?
Пробовал так
initDG2[myGrid2.selectedIndex].setItemAt(xxx,2);
т.е. заношу значение переменной xxx в initDG2[myGrid2.selectedIndex] на второе место (в Column2).
но выскакивает ошибка.

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Могу ошибаться, не могу проверить, но примерно так:
Код AS3:
var obj:Object = new Object();
obj['Column2'] = 'x12'; // или obj.Column2 = 'x12';
initDG2.setItemAt(obj, myGrid2.selectedIndex);
__________________
In Code We Trust

Старый 01.06.2012, 11:32
andrew2312 вне форума Посмотреть профиль Отправить личное сообщение для andrew2312 Найти все сообщения от andrew2312
  № 5  
Ответить с цитированием
andrew2312

Регистрация: Apr 2012
Сообщений: 32
Astraport спасибо, но не работает. Беда какая-то. С первой строкой всё в порядке. Пользователь внёс данные в ячейку Column1 и ячейку Column2. В третью ячейку заносится автоматически, например, их сумма. Ок, в провайдере это есть. Начинаем работать со второй строкой. Заполнили первую и вторую ячейки и вместо того, чтобы в третьей появилась сумма, весь провайдер обнуляется - во всех строках все ячейки становятся пустыми. Блин. Задача простая. Не могу понять, где неточность. Весь код:
Код AS1/AS2:
[Bindable] var initDG2:ArrayCollection = new ArrayCollection([
{Column1:'', Column2:'', Column3:''},
{Column1:'', Column2:'', Column3:''},
{Column1:'', Column2:'', Column3:''}
]);
 
private function func3(item:Object, column:DataGridColumn):String
   var string3:String=(Number(item.Column1)+Number(item.Column2)).toString();
   initDG2[myGrid2.SelectedIndex]=string3;
   return string3;
}
Код:
<mx:DataGrid id="myGrid2" dataProvider="{initDG2}" editable="true" selectable="true">
   <mx:columns>
     <mx:DataGridColumn dataField="Column1"/>
     <mx:DataGridColumn dataField="Column2"/>
     <mx:DataGridColumn dataField="Column3" editable="false" labelFunction="func3"/>
   </mx:columns>
</mx:DataGrid>
Добавлено через 37 минут
Извините, в определении функции конечно
Код AS1/AS2:
initDG2[myGrid2.SelectedIndex].Column3=string3;

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Во-первых, обращаться к АС нужно initDG2.setItemAs();
Во-вторых, мне кажется нельзя одновременно через labelFunction изменять и AC и отображение. Правильнее менять AC и она уже отобразит все как нужно. В данном случае это можно сделать через itemEditEnd http://livedocs.adobe.com/flex/3/htm...leditor_7.html
__________________
In Code We Trust

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

Регистрация: Apr 2012
Сообщений: 32
Уважаемый Astraport! Спасибо большое! Действительно, через itemEditEnd всё работает!

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

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

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


 


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


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