Flex中的动态数据网格列

时间:2015-09-03 10:21:42

标签: actionscript-3 flex datagrid actionscript

我的系统中有<mx:DataGrid>,如下所示。

<mx:DataGrid id="testDG">
  <mx:columns>
    <mx:DataGridColumn headerText="name" dataField="name">
    <mx:DataGridColumn headerText="measure" dataField="measure">
  </mx:columns>
</mx:DataGrid>

它有两列,namemeasure。我想在数据网格中添加另外数量的列及其数据作为measure

所以看起来像:

name  measure  1-Aug  2-Aug   3-Aug ...

abc   ggggg    20      22      24   ...
xyz   fffff    21      19      20   ...
pqr   hhhhh    30      21      13   ...

...    ...     ...     ...     ...

我想动态添加date明智的结果,然后添加measure列。
那么,有可能吗?如何在Flex中的度量之后添加动态列?

2 个答案:

答案 0 :(得分:1)

这个怎么样?

url="http://ceogoa.nic.in/appln/UIL/ElectoralRoll.aspx"
url=html(url)
text=url%>%html_nodes(xpath='//*@id="ctl00_Main_drpAC"]/option')%>%html_text() 
values=url%>%html_nodes(xpath='//*@id="ctl00_Main_drpAC"]/option')%>%html_attr("value")

如果你想在8月1日到8月31日之间添加这些数据字段就像val1~val31一样,那怎么样?

// Get current columns here.
var cols: Array = grid.columns;

var col1:DataGridColumn = new DataGridColumn();
col1.headerText = "1-Aug";
col1.dataField = "foo";
cols.push(col1);

var col2:DataGridColumn = new DataGridColumn();
col2.headerText = "2-Aug";
col2.dataField = "baz";
cols.push(col2);

grid.columns = cols;

如果你想添加其他月份,你应该从日历而不是静态31值。

更新: 2015年10月1日16:40(JST)

对于spark.DataGrid,有一点不同于mx.DataGrid 这是spark.DataGrid的代码。

var cols: Array = grid.columns;
for (var i:int=1; i<=31;i++){
    var col:DataGridColumn = new DataGridColumn();
    col.headerText = i.toString()+"-Aug";
    col.dataField = "val"+i.toString();
    cols.push(col);
}
grid.columns = cols;

答案 1 :(得分:0)

DataGrid拥有财产columns。它可用于动态设置列。见例:

var columns:Array = [];
var nameColumn:DataGridColumn = new DataGridColumn("name");
nameColumn.dataField = "name";
columns.push(nameColumn);
var measureColumn:DataGridColumn = new DataGridColumn("measure");
measureColumn.dataField = "measure";
columns.push(measureColumn);
var newColumn:DataGridColumn = new DataGridColumn("1-Aug");
newColumn.dataField = "1AugValue";
columns.push(newColumn);
...
dataGrid.columns = columns;

据我所知,当您需要更改列结构同时保留已存在的列时,您需要创建新数组并再次声明已存在的列。