Захаров
23.06.2008, 16:46
Ниже приведен пример загрузка 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>
Вопрос состоит в следующем что нужно дописать к программируемому гриду что бы он вел себя так же как и объявленные 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>