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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.02.2009, 18:14
Foli вне форума Посмотреть профиль Отправить личное сообщение для Foli Найти все сообщения от Foli
  № 1  
Ответить с цитированием
Foli
[+1 04.05.08]

Регистрация: May 2008
Адрес: Czech, Prague
Сообщений: 65
По умолчанию XML -> DataGrid with CheckBox. Selected values

Привет друзья. Нужна помощь.
Есть у меня XML объект который я скормил DataGrid'u

Нужно добавить в DataGrid в каждую строку CheckBox.
Потом нужно получить все значения выделенных CheckBox'ов (id - элемент в XML)

Пример XML'я:
Код AS3:
<messages>
     	<msg>
		<id>1</id>
		<date>10.11.2009</date>
		<subject>I lost my Password</subject>
		<message>Hi there. I lost my pass dude. Need help</message>
	</msg>
	<msg>
		<id>2</id>
		<date>11.11.2009</date>
		<subject>I dit that</subject>
		<message>Admin, call me pls.</message>
	</msg>
</messages>
DataGrid:
Код AS3:
<mx:DataGrid id="gridMsg">
	<mx:columns>
		<mx:DataGridColumn>
			<mx:itemRenderer>
				<mx:Component>
					<mx:CheckBox/>
				</mx:Component>						
			</mx:itemRenderer>
		</mx:DataGridColumn>
                <mx:DataGridColumn dataField="date" headerText="Date"/>
                <mx:DataGridColumn dataField="subject" headerText="Subject"/>						
       </mx:columns>
</mx:DataGrid>
Прошу помочь кто знает.

Старый 04.02.2009, 19:52
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 2  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
А ведь google помогает

Старый 05.02.2009, 14:02
Foli вне форума Посмотреть профиль Отправить личное сообщение для Foli Найти все сообщения от Foli
  № 3  
Ответить с цитированием
Foli
[+1 04.05.08]

Регистрация: May 2008
Адрес: Czech, Prague
Сообщений: 65
Цитата:
Сообщение от r_r_f_r Посмотреть сообщение
А ведь google помогает
Думаю что этот пример не для меня. Всё равно спасибо.

Вот зачем это делать?
Код AS3:
selected="{data.online}"
А тут вообще не пойму логики:
Код AS3:
click="data.online=!data.online"
И зачем тут добавили поле которого нет в изначальной структуре данных? dataField="online"
Код AS3:
 <mx:DataGridColumn headerText="Online" dataField="online">
Каша в голове. Обязательно ли добавлять элемент в мой XML:
Цитата:
<selected> true or false </selected>

Старый 05.02.2009, 15:28
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 4  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Вообще, с хмл могут возникнуть сложности поскольку большинство методов по работе с хмл создают новый XML или XmlList, т.е. изменение его не повлечёт изменение начального, сразу не могу понять что и как должно быть, и это собственно не самое благодарное занятие

Код AS3:
selected="{data.online}"
это для задания начальных значей в общем-то, т.е. в данном примере это не обязательно, но если какой-то online будет на старте true, то это задание всё исправит.

Код AS1/AS2:
click="data.online=!data.online"
При клике мы изменяем содержимое, само чекБокс поле забиндино на это содержимое см. выше

Цитата:
И зачем тут добавили поле которого нет в изначальной структуре данных? dataField="online"
Как это его нет?
Если я правильно понял вопрос, то этот столбец добавлен просто для показаетльных выступлений.

Цитата:
Обязательно ли добавлять элемент в мой XML
Если хочешь всё таки работать с XML то предлагая погуглить чуть, во всяком случае я бы не работал с ним.

Добавлено через 14 минут
Или собственно вот так:

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();" viewSourceURL="srcview/index.html">
 
    <mx:Script>
        <![CDATA[
        	import mx.controls.CheckBox;
 
            [Bindable]
            private var _xml:XMLList = new XMLList('<msg><id>1</id><date>10.11.2009</date><subject>I lost my Password</subject><message>Hi there. I lost my pass dude. Need help</message></msg><msg><id>2</id><date>11.11.2009</date><subject>I dit that</subject><message>Admin, call me pls.</message></msg>');
            private var _arr:Array;
 
            private function init():void
            {
            	_arr = new Array(_xml.length);
            	gridMsg.addEventListener('CheckBoxChanged',change);
            }
 
            private function change(e:Event):void
            {
            	_arr[(e.target as CheckBox).data.id] = (e.target as CheckBox).selected;
            	trace (_arr);
            }
        ]]>
    </mx:Script>
    <mx:DataGrid id="gridMsg" dataProvider="{_xml}">
	<mx:columns>
		<mx:DataGridColumn>
			<mx:itemRenderer>
				<mx:Component>
					<mx:CheckBox click="onClick(event)">
						<mx:Script>
							<![CDATA[
								private function onClick(e:MouseEvent):void
								{
									var ev:Event = new Event('CheckBoxChanged',true,false);
									(this as EventDispatcher).dispatchEvent(ev);
								}
							]]>
						</mx:Script>
					</mx:CheckBox>
				</mx:Component>
			</mx:itemRenderer>
		</mx:DataGridColumn>
            <mx:DataGridColumn dataField="date" headerText="Date"/>
            <mx:DataGridColumn dataField="subject" headerText="Subject"/>						
       </mx:columns>
	</mx:DataGrid>
</mx:Application>


Последний раз редактировалось r_r_f_r; 05.02.2009 в 16:04.
Старый 05.02.2009, 16:49
Foli вне форума Посмотреть профиль Отправить личное сообщение для Foli Найти все сообщения от Foli
  № 5  
Ответить с цитированием
Foli
[+1 04.05.08]

Регистрация: May 2008
Адрес: Czech, Prague
Сообщений: 65
Спасибо что объяснил.
Всё понятно стало. Хехеххе, сделал, работает.

Код AS3:
<mx:DataGrid>
        <mx:columns>
	<mx:DataGridColumn>
	     <mx:itemRenderer>
		<mx:Component>
              	       <mx:HBox>
                      <mx:CheckBox id="chbox" click="data.sel=chbox.selected"/>
                             </mx:HBox>
                          </mx:Component>
   	     </mx:itemRenderer>
             </mx:DataGridColumn>
</mx:DataGrid>
Изменения в гриде остаются в XML объекте.
Когда нужно будет получить выделенные элементы, я просто пробегу по XML объекту и соберу урожай.

Дело в том что мне удобно работать с XML.
У меня есть Server Side. Мне функции на Jave возвращают уже готовый объект и я его тупо отдаю гриду. Использую GlassFish + BlazeDS
Оборачиваю всё в xml используя org.w3c.Document etc...

Всё очень просто и удобно.

Добавлено через 23 минуты
Забыл сказать. Добавил в XML элемент:
Цитата:
<sel> true or false </sel>

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

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

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


 


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


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