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

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

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

Регистрация: Nov 2006
Сообщений: 89
Arrow XML и DataGrid

Пытаюсь эдитить XML следующего формата:
Код:
var xml:XML = 
<root>
<lang type="ui">LastStr1</lang>
<lang type="ui">LastStr2</lang>
</root>
в DataGrid'е:
Код:
<mx:DataGrid dataProvider="{ xml.lang }" editable="true" >
<mx:columns>
<mx:DataGridColumn dataField="@type" editable="false" />			
<mx:DataGridColumn editable="true"/>  								
</mx:columns>		
</mx:DataGrid>
Но при этом не понятно что писать в dataField второй колонки (чтобы редактировать LastStr1, LastStr2). Когда пишу просто "0" то отображается всё нормально, но редактировать нельзя, вылазит ексепшон:
Error #1087: Assignment to indexed XML is not allowed.
В каком направлении копать ?
Сптруктуру XML файла переделывать не хочется.

спасибо

Старый 29.10.2007, 12:30
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.collections.XMLListCollection;
			private var xml:XML = <root>
									<lang type="ui">LastStr1</lang>
									<lang type="ui">LastStr2</lang>
								</root>;
								
			[Bindable]
			private var dataProvider:XMLListCollection = new XMLListCollection(XML(xml.toString()).children());
		]]>
	</mx:Script>
	<mx:DataGrid dataProvider="{dataProvider}" editable="true" >
		<mx:columns>
			<mx:DataGridColumn dataField="@type" editable="false" />	
			<mx:DataGridColumn dataField="0" editable="true"/>  								
		</mx:columns>		
	</mx:DataGrid>
</mx:Application>
Так не пашет?

Кстати я не стал бы создавать такой XML, лучше юзать или атрибуты или элементы.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 29.10.2007, 12:42
lephik вне форума Посмотреть профиль Отправить личное сообщение для lephik Найти все сообщения от lephik
  № 3  
Ответить с цитированием
lephik

Регистрация: Nov 2006
Сообщений: 89
нет... так тоже не пашет

Старый 29.10.2007, 12:56
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 4  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Любопытно ибо так
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.collections.XMLListCollection;
			private var xml:XML = 	<root>
										<lang>
											<type>ui</type>
											<item>Str1</item>
										</lang>
										<lang>
											<type>ui</type>
											<item>Str1</item>
										</lang>
										<lang>
											<type>ui</type>
											<item>Str1</item>
										</lang>
									</root>;
								
			[Bindable]
			private var dataProvider:XMLListCollection = new XMLListCollection(xml.children());
		]]>
	</mx:Script>
	<mx:DataGrid dataProvider="{dataProvider}" editable="true" >
		<mx:columns>
			<mx:DataGridColumn dataField="type" editable="false" />	
			<mx:DataGridColumn dataField="item" editable="true"/>  								
		</mx:columns>		
	</mx:DataGrid>
</mx:Application>
Все пашет прекрасно...надо покопатся в коде, в документации нету пояснения данному исключениею...
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

Регистрация: Nov 2006
Сообщений: 89
так то оно пашет... вопрос сводится к тому как обратиться к значению ноды XML документа как к свойству.... тоесть что писать в поле dataField при моей структуре xml документа.
Либо если это невозможно то где и какие методы переопределять

Старый 29.10.2007, 13:21
fishbounce вне форума Посмотреть профиль Отправить личное сообщение для fishbounce Посетить домашнюю страницу fishbounce Найти все сообщения от fishbounce
  № 6  
Ответить с цитированием
fishbounce

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 176
обратиться-то можно как xml[0], а вот записать так что-нибудь нельзя: видимо, только через setChildren(). Поэтому, если уж так хочется быть привязанным к такой структуре xml, надо юзать itemRenderers и там переопределять методы которые отвечают за считывание и запись редактируемых значений. Если, конечно, это можно сделать по идее, должно быть можно

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

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
и еще может не по теме, но полезно будет знать - не юзайте такое объявление XML в MXML т.к. при компиляции выкусываються теги <!CDATA[]> и остаеться только их содержимое - что не есть гуд
__________________
33 коровы

Старый 29.10.2007, 13:42
fishbounce вне форума Посмотреть профиль Отправить личное сообщение для fishbounce Посетить домашнюю страницу fishbounce Найти все сообщения от fishbounce
  № 8  
Ответить с цитированием
fishbounce

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 176
вот, какое возможно решение:
Код:
<mx:Script><![CDATA[
	import mx.controls.TextInput;
	import mx.events.DataGridEventReason;
	import mx.events.DataGridEvent;
	
        private var xml:XML = 
             <root>
                  <lang type="ui">LastStr1</lang>
                  <lang type="ui">LastStr2</lang>
             </root>;	
	
	private function processData(event : DataGridEvent) : void {
             if (event.reason == DataGridEventReason.CANCELLED) {
		return;
	     }
	
	     if (event.dataField == "0") {
		event.preventDefault();
					
	        grid.editedItemRenderer.data.setChildren(
		   textInput(DataGrid(event.target).itemEditorInstance).text
		);					
	      }
	}			
]]></mx:Script>

<mx:DataGrid 
        id="grid" dataProvider="{xml.lang}" 
        editable="true" 
        itemEditEnd="processData(event);">
	<mx:columns>
		<mx:DataGridColumn dataField="@type" editable="false" />	
		<mx:DataGridColumn dataField="0" editable="true" />  				
        </mx:columns>		
</mx:DataGrid>


Последний раз редактировалось fishbounce; 29.10.2007 в 13:46.
Старый 29.10.2007, 15:25
NikR вне форума Посмотреть профиль Отправить личное сообщение для NikR Найти все сообщения от NikR
  № 9  
Ответить с цитированием
NikR

Регистрация: Nov 2006
Сообщений: 76
Попробуй вместо 0:
* или text или this

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

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

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


 


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


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