Actionscript 3 如何在mxml和/或actionsctpt中向Adobe flex mx:DataGrid添加列?
我有简单的mxml代码Actionscript 3 如何在mxml和/或actionsctpt中向Adobe flex mx:DataGrid添加列?,actionscript-3,apache-flex,datagrid,mxml,Actionscript 3,Apache Flex,Datagrid,Mxml,我有简单的mxml代码 <mx:DataGrid id="DGG" editable="true"> <mx:dataProvider> <mx:Object scheduledDate="4/1/2006"/> </mx:dataProvider> </mx:DataGrid> <mx:Button id="SetBut" label="Set Ar
<mx:DataGrid id="DGG"
editable="true">
<mx:dataProvider>
<mx:Object scheduledDate="4/1/2006"/>
</mx:dataProvider>
</mx:DataGrid>
<mx:Button id="SetBut"
label="Set Array as Data Provider"
click="SetDP(); AddBut.visible = true;"
x="100.5"
y="164"
width="211"/>
<mx:Button id="AddBut"
label="Add a column!"
click="AddCol();"
x="100.5"
y="194"
width="211"
visible="false"/>
<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;
import mx.collections.ArrayCollection;
[Bindable]
public var MyAC:ArrayCollection=new ArrayCollection([{scheduledDate: "4/1/2006", homeTeam: "Chester Bucks"}]);
public function SetDP():void
{
DGG.dataProvider=MyAC
}
public function AddCol():void
{
MyAC.addItem({scheduledDate: "4/5/2007", homeTeam: "Long Valley Hitters", Umpire: "Amanda Hugenkis"});
DGG.columns.push(new DataGridColumn("Umpire"));
}
]]>
</mx:Script>
我想将行添加到我的表datagrid中,怎么做呢
如何在mxml和/或actionsctpt中向Adobe flex mx:DataGrid添加列
(您可以将此代码放入Flash或AIR应用程序中-它将编译时不会出错,但不会添加任何列=()根据我收集的信息,您正在尝试将一些列动态添加到数据网格中:
dataGrid.columns.push(new DataGridColumn("dataField"));
添加行的最佳方法是使用可绑定的数据提供程序,我更喜欢ArrayCollection类
[Bindable] public var MyAC:ArrayCollection = new ArrayCollection([
{scheduledDate:"4/1/2006", homeTeam:"Chester Bucks",awayTeam:"Long Valley Hitters", field:"Dawn Field", umpire:"Phil McKraken"}
]);
然后在datagrid中,不要通过MXML定义DP,而是这样添加:
<mx:DataGrid id="dataGrid" editable="true" dataprovider="{MyAC}"....>
由于它是绑定的,它将自动显示在dataGrid中
假设您在MXML中定义了您的列,如示例中所示,您可以这样添加裁判员列:
dataGrid.columns.push(new DataGridColumn("Umpire"));
由于该专栏已经发布,所以添加内容要归功于小丑宝贝
2010年2月1日编辑:完整代码示例
<?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.ArrayCollection;
[Bindable] public var MyAC:ArrayCollection = new ArrayCollection([
{scheduledDate:"4/1/2006", homeTeam:"Chester Bucks",awayTeam:"Long Valley Hitters", field:"Dawn Field", umpire:"Phil McKraken"}
]);
public function addRow():void{
MyAC.addItem({scheduledDate:"4/5/2006", homeTeam:"Long Valley Hitters",awayTeam:"Chester Bucks", field:"Sunset Field", Umpire:"Amanda Hugenkis"})
}
public function addCol():void{
var dgc:DataGridColumn = new DataGridColumn("Umpire");
var cols:Array = dataGrid.columns;
cols.push(dgc);
dataGrid.columns = cols;
}
]]>
</mx:Script>
<mx:DataGrid id="dataGrid" editable="true" dataProvider="{MyAC}">
<mx:columns>
<mx:DataGridColumn dataField="scheduledDate" />
<mx:DataGridColumn dataField="homeTeam" />
<mx:DataGridColumn dataField="awayTeam" />
<mx:DataGridColumn dataField="field" />
</mx:columns>
</mx:DataGrid>
<mx:Button x="10" y="150" label="Add Row" click="addRow();"/>
<mx:Button x="202" y="150" label="Add Col" click="addCol();"/>
</mx:Application>
休闲示例将10列添加到datagrid“myGrid”
私有变量列:数组;
对于(var i:int=0;iI),我们添加了一个巨大的示例,说明了我们的所有观点,并致力于添加多行和多列。
<?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.ArrayCollection;
[Bindable] public var MyAC:ArrayCollection = new ArrayCollection([
{scheduledDate:"4/1/2006", homeTeam:"Chester Bucks",awayTeam:"Long Valley Hitters", field:"Dawn Field", umpire:"Phil McKraken"}
]);
public function addRow():void{
MyAC.addItem({scheduledDate:"4/5/2006", homeTeam:"Long Valley Hitters",awayTeam:"Chester Bucks", field:"Sunset Field", Umpire:"Amanda Hugenkis"})
}
public function addCol():void{
var dgc:DataGridColumn = new DataGridColumn("Umpire");
var cols:Array = dataGrid.columns;
cols.push(dgc);
dataGrid.columns = cols;
}
]]>
</mx:Script>
<mx:DataGrid id="dataGrid" editable="true" dataProvider="{MyAC}">
<mx:columns>
<mx:DataGridColumn dataField="scheduledDate" />
<mx:DataGridColumn dataField="homeTeam" />
<mx:DataGridColumn dataField="awayTeam" />
<mx:DataGridColumn dataField="field" />
</mx:columns>
</mx:DataGrid>
<mx:Button x="10" y="150" label="Add Row" click="addRow();"/>
<mx:Button x="202" y="150" label="Add Col" click="addCol();"/>
</mx:Application>
private var columns:Array;
for (var i:int=0; i<10;i++){
var dgc:DataGridColumn = new DataGridColumn("column name");
dgc.headerText="column header";
columns.push(dgc);
}
myGrid.columns=columns;