2010-02-25 4 views
1

같은 열을 공유하는 여러 데이터 격자 인 구성 요소를 만들었습니다 (각 데이터 격자는 이전과 동일하지만 다른 데이터를 사용합니다).Flex 데이터 격자 열에 머리글 텍스트가 누락되었습니다.

문제

헤더 텍스트는 마지막 데이터 그리드에 표시됩니다. 모든 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를 내가 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); 

      dataGrid.columns = this._columns; 

      dataGrid.addEventListener(DataGridEvent.HEADER_RELEASE, onHeaderRelease); 

      this.addChild(dataGrid); 
     } 

답변

1

을 만드는 오전 방법이다. 여기 내가해야 할 일이있다.

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