Flex DataGrid не отображает данные - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть собственная dataGrid, которая больше похожа на 2D-список (если это вообще имеет смысл). Я динамически создаю столбцы и воссоздаю dataProvider в соответствии со своими потребностями. Во время отладки я вижу, что я создаю столбцы и устанавливаю их в dataGrid, а также создаю и устанавливаю dataProvider, но по какой-то причине я могу видеть 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;
    }
}

Ответы [ 2 ]

0 голосов
/ 01 апреля 2010

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

0 голосов
/ 01 апреля 2010

попробуйте обновить сетку данных: ссылка :)

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

toolGrid.invalidateList ();

Взгляните на dataField свойство DatagridColumn class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...