Flex dataGrid列缺少标题文本

时间:2010-02-25 18:09:40

标签: flex text datagrid header

我创建了一个并排存在多个数据网格的组件,这些组件共享相同的列(每个数据网格与之前的数据网格相同但具有不同的数据)。

问题

标题文本仅显示在最后一个数据网格上。如何让文本显示在所有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);
        }

1 个答案:

答案 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);
        }