2010-03-31 8 views
0

У меня есть пользовательский dataGrid, который больше похож на 2D-список (если это имеет смысл вообще). Я динамически создаю столбцы и воссоздавая dataProvider в соответствии с моими потребностями. Во время отладки я вижу, что я создаю столбцы и устанавливаю их в dataGrid, создавая и устанавливая dataProvider, но по какой-то причине я могу видеть dataGrid и столбцы, но не данные.Flex DataGrid не отображает данные

[Bindable] 
private var mockData:ArrayCollection = new ArrayCollection([ 
{value: "425341*"},      
{value: "425341*"},             
{value: "425341*"}, 
{value: "425341*"}, 
{value: "425341*"},           
{value: "425341*"},            
{value: "425341*"},          
{value: "425341*"},           
{value: "425341*"}]); 

     ... 

<TwoDimensionalList 
    width="100%" height="100%" 
    numColumns="7" numRows="7" 
    dataField="value" 
    dataProvider="{mockData}"/> 

Фрагмент кода из объекта содержит только важные функции, все остальное не имеет значения (добытчики, сеттера, и т.д ...).

В процессе отладки я проверил все переменные в функциях, чтобы убедиться, что они были назначены, и значение, которое я ожидал.

[Отрывок]

public class TwoDimensionalList extends DataGrid 
{ 

    ... 

    /** 
    * Creates and sets properties of columns 
    */ 
    private function createColumns():void 
    { 
     var column:DataGridColumn; 
     var cols:Array = this.columns; 

     for(var i:uint=0; i < numColumns; i++) 
     { 
      column = new DataGridColumn("column"+i.toString()); 
      column.dataField = "column"+i.toString(); 
      cols[i]=column; 
     } 

     this.columns = cols; 

     // go to the current 
     gotoPage(this._currentPageNum); 
    } 

    /** 
    * Sets the data for the dataprovider based on the 
    * number of columns, rows, and page number. 
    * 
    * @param pageNum the page number of the data to be viewed in the DataGrids. 
    */ 
    private function gotoPage(pageNum:uint):void 
    { 
     _currentPageNum = pageNum; 

     var startIndex:uint = (pageNum-1)*numColumns*numRows; 

     var data:ArrayCollection = new ArrayCollection(); 

     for(var i:uint=0; i < numRows; i++) 
     { 
      var obj:Object = new Object(); 

      for(var j:uint=0; j < numColumns; j++) 
      { 
       if((i+(j*numRows)+startIndex) < _dataProvider.length) 
        obj["column"+j.toString()] = String(_dataProvider.getItemAt(i+(j*numRows)+startIndex)["value"]); 
      } 

      data.addItem(obj); 
     } 

     this.dataProvider = data; 
    } 
} 

ответ

0

Проблема была проблема синхронизации, когда я устанавливал dataProvider в конце. Я применил функцию callLater для установки dataProvider, и проблема была исправлена.

0

попытка обновить DataGrid: link:)

Вы пробовали следующую команду, она должна работать гладко.

toolGrid.invalidateList();

Взгляните на DataField свойство DataGridColumn класса.

+0

спасибо за вашу помощь, но ни один из этих решений не исправил это, спасибо, хотя – asawilliams

Смежные вопросы