我创建了一个并排存在多个数据网格的组件,这些组件共享相同的列(每个数据网格与之前的数据网格相同但具有不同的数据)。
问题
标题文本仅显示在最后一个数据网格上。如何让文本显示在所有datagrid标题上?
以下是我实例化组件的方法。
<common:PageDataGrid width="100%" height="100%"
numGroups="5" numRows="9" dataProvider="{createData(5, 9)}">
<common:columns>
<mx:DataGridColumn dataField="ext" headerText="EXT." width="45"/>
<mx:DataGridColumn dataField="name" headerText="ASSIGNED TO"/>
</common:columns>
</common:PageDataGrid>
以下是我创建datagrids的方法
for(var i:uint=0; i < _numGroups; i++)
{
dataGrid = new DataGrid();
dataGrid.headerHeight = 25;
dataGrid.rowCount = _numRows;
dataGrid.rowHeight = 25;
dataGrid.percentWidth = 100;
dataGrid.dataProvider = dataGridProviders.getItemAt(i);
dataGrid.columns = this._columns;
dataGrid.addEventListener(DataGridEvent.HEADER_RELEASE, onHeaderRelease);
this.addChild(dataGrid);
}
答案 0 :(得分:1)
在将datagridcolumns分配给datagird之前,需要对datagridcolumns执行深层复制。这是我需要做的。
for(var i:uint=0; i < _numGroups; i++)
{
dataGrid = new DataGrid();
dataGrid.headerHeight = 25;
dataGrid.rowCount = _numRows;
dataGrid.rowHeight = 25;
dataGrid.percentWidth = 100;
dataGrid.dataProvider = dataGridProviders.getItemAt(i);
// Deep Copy
registerClassAlias("mx.controls.dataGridClasses.DataGridColumn", DataGridColumn);
var columnsCopy:Array = new Array(this._columns.length);
for(var j:uint=0; j < this._columns.length; j++)
{
columnsCopy[j] = ObjectUtil.copy(this._columns[j]) as DataGridColumn;
}
// End Deep Copy
dataGrid.columns = columnsCopy;
dataGrid.addEventListener(DataGridEvent.HEADER_RELEASE, onHeaderRelease);
this.addChild(dataGrid);
}