我有一个AdvancedDataGrid,定义为:
<mx:AdvancedDataGrid id="mainGrid" width="200" height="200" designViewDataType="flat" >
<mx:columns>
</mx:columns>
</mx:AdvancedDataGrid>我将动态地将列添加到网格中,主要问题是:
P.S.我用这个函数来填充数据:
private function buildUpTheGrid() : void {
masterColumns = new Array();
masterData = new Array();
var tempColumn : AdvancedDataGridColumn;
for( var iY : int = 0; iY < columsCount; iY++ )
{
masterData.push( new Array() );
tempColumn = new AdvancedDataGridColumn();
tempColumn.width = 20;
for( var iX : int = 0; iX < rowsCount; iX++ )
masterData[ iY ].push( iX );
// tempColumn.dataField = ???
masterColumns.push( tempColumn );
}
mainGrid.columns = masterColumns;
mainGrid.validateNow();
}发布于 2011-07-12 13:43:22
对“如何将数组或向量设置为每个列的数据提供程序”问题的简短回答:您不能。
flex中的数据“视图”都是基于行的,而不是基于列的。因此,要使其工作,需要将列转换为行。这是一个相当简单的算法,我相信你能搞清楚。
至于动态添加列,只需将列添加到数组中,然后在网格的“columns”属性中设置该数组。您需要在列上设置一个'dataField‘属性,以便知道您刚刚转换过的行数据中要显示哪个数据属性。
发布于 2011-07-12 13:44:54
How to setup an array or vector as dataprovider to each Column ?在DataGrid和AdvancedDataGrid的体系结构中,单独的列没有自己的、独立的dataProviders。要在组件上设置dataProvider,可以执行以下操作:
<mx:AdvancedDataGrid id="mainGrid" dataPRovider="{myDataProvider}" >在ActionScript中,您可以像这样设置dataProvider:
mainGrid.dataProvider = myDataProvider如果有来自需要在单个DataGrid中显示的无数不同源的数据,则应该尝试将这些数据组合到单个dataProvider中;使用一些公共元素,例如数据库主键值。创建一个包含每个单独元素的对象应该可以工作。在概念上是这样的:
public class myCombinedObject{
public var commonElement : int;
public var fromDataProvider1 : myCustomDataClass1;
public var fromDataProvider2 : myCustomDataClass2;
}从那里开始,只需为每一列编写itemRenderers以显示相关数据。
发布于 2011-07-12 13:45:11
通常,我们会将数据提供程序设置为Datagrid。在列中,我们可以设置数据字段,它将从数据提供程序的对象中获取要在特定列中显示的属性。您的目标是使列来自不同的数组吗?在这种情况下,这将是一个棘手的问题。
https://stackoverflow.com/questions/6664832
复制相似问题