![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2006
Сообщений: 89
|
Пытаюсь эдитить XML следующего формата:
в DataGrid'е: <mx:DataGrid dataProvider="{ xml.lang }" editable="true" >
<mx:columns>
<mx:DataGridColumn dataField="@type" editable="false" />
<mx:DataGridColumn editable="true"/>
</mx:columns>
</mx:DataGrid>
Error #1087: Assignment to indexed XML is not allowed. В каком направлении копать ? Сптруктуру XML файла переделывать не хочется. спасибо |
|
|||||
|
4AM Games
|
<?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 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 89
|
нет... так тоже не пашет
|
|
|||||
|
4AM Games
|
Любопытно ибо так
<?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 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 89
|
так то оно пашет... вопрос сводится к тому как обратиться к значению ноды XML документа как к свойству.... тоесть что писать в поле dataField при моей структуре xml документа.
Либо если это невозможно то где и какие методы переопределять ![]() |
|
|||||
|
Регистрация: Dec 2003
Адрес: Москва
Сообщений: 176
|
обратиться-то можно как xml[0], а вот записать так что-нибудь нельзя: видимо, только через setChildren(). Поэтому, если уж так хочется быть привязанным к такой структуре xml, надо юзать itemRenderers и там переопределять методы которые отвечают за считывание и запись редактируемых значений. Если, конечно, это можно сделать
по идее, должно быть можно |
|
|||||
|
Регистрация: 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. |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 76
|
Попробуй вместо 0:
* или text или this |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|