![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2007
Сообщений: 66
|
Ниже приведен пример загрузка XML данных в грид и комбобокс объявленные в MXML нотации и грид добавленный программным способом
Вопрос состоит в следующем что нужно дописать к программируемому гриду что бы он вел себя так же как и объявленные MXML нотацией при изменении данных в DATAPROVIDER! <?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;
import mx.controls.DataGrid;
[Bindable]
private var xxx:XML = new XML()
private var dg:DataGrid = new DataGrid()
private function init():void
{
var dgcolumns:Array = new Array();
var dgcolumn1:DataGridColumn = new DataGridColumn();
dgcolumn1.dataField="@id";
dgcolumns.push(dgcolumn1)
var dgcolumn2:DataGridColumn = new DataGridColumn();
dgcolumn2.dataField="@name";
dgcolumns.push(dgcolumn2)
var dgcolumn3:DataGridColumn = new DataGridColumn();
dgcolumn3.dataField="@desc";
dgcolumns.push(dgcolumn3)
dg.columns = dgcolumns;
dg.width=200
dg.height=200
this.addChild(dg);
dg.dataProvider = this.xxx.item;
}
private function f(evt:Event):void
{
this.xxx = XML ('<o><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /></o>');
}
private function f_2(evt:Event):void
{
this.xxx = XML ('<o><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /></o>');
dg.dataProvider = this.xxx.item;// почему приходится добавлять эту строчку? и что дописать что бы было как внотации MXML?
}
]]>
</mx:Script>
<mx:Model id="md1">
<o>
<item id="1" name="name1" desc="ffffffff" />
<item id="1" name="name2" desc="ffffffff" />
<item id="1" name="name1" desc="ffffffff" />
<item id="1" name="name2" desc="ffffffff" />
</o>
</mx:Model>
<mx:ComboBox dataProvider="{xxx.item}" labelField="@name"></mx:ComboBox>
<mx:DataGrid dataProvider="{xxx.item}">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="@id"/>
<mx:DataGridColumn headerText="Column 2" dataField="@name"/>
<mx:DataGridColumn headerText="Column 3" dataField="@desc"/>
</mx:columns>
</mx:DataGrid>
<mx:Button click="f(event)" label="загрузка обычная" />
<mx:Button click="f_2(event)" label="загрузка для программируемого грида"/>
</mx:Application>
Последний раз редактировалось Захаров; 23.06.2008 в 16:49. |
|
|||||
|
Так будет работать с обоими гридами. Но вот почему не работает твой вариант...
Может проблема в том, что MXML и событие для датабиндинга формируется на этапе компиляции, а программный грид формируется в рантайме, т.е. для него нету события. Можно попробовать поюзать BindingUtils.bindProperty Последний раз редактировалось Borman2000; 25.06.2008 в 23:16. |
|
|||||
|
Если использовать вместо XML непосредственно XMLList который будет источником, то все образуеться
![]() Вот шаблончик : [Bindable]
public var xxx:XMLList = new XMLList();
private function init():void
{
***
BindingUtils.bindProperty(dg, "dataProvider", this, "xxx");
this.addChild(dg);
}
private function f(evt:Event):void
{
this.xxx = XMLList('<item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" /><item id="1" name="name1" desc="ffffffff" /><item id="1" name="name2" desc="ffffffff" />');
}
<mx:ComboBox dataProvider="{xxx}" labelField="@name"/>
<mx:DataGrid dataProvider="{xxx}">
***
</mx:DataGrid>
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:30. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|