Заполнить массив в Flex Datagrid - PullRequest
0 голосов
/ 11 июля 2009

Я получаю тип возвращаемого значения в виде массива из PHP. Когда я заполняю свою таблицу данных, значения не приходят ... Я не понимаю, почему это происходит так.

var appSes:Array = event.result as Array
dg.dataProvider = appSes;

Я получаю значения, из PHP есть что-то кроме этого, что я должен сделать.

<local:CheckBoxDataGrid id="dg" 
                    allowMultipleSelection="true"   x="118" y="142" width="507">
        <local:columns>
            <mx:DataGridColumn dataField="firstName" headerText=" " width="20" sortable="false" itemRenderer="CheckBoxRenderer" > 
            </mx:DataGridColumn>
            <mx:DataGridColumn dataField="firstName" headerText="First Name" />
            <mx:DataGridColumn dataField="lastName" headerText="Last Name" />
        </local:columns>
    </local:CheckBoxDataGrid>

1 Ответ

0 голосов
/ 12 июля 2009

Используйте ArrayCollection, а не Array. В общем, вы всегда должны использовать ArrayCollections при привязке к dataProviders списков, гридов и т. Д., Так как они осведомлены об изменении свойств и будут сообщать списку каждый раз, когда объекты добавляются, удаляются или изменяются внутри них. Массивы не обеспечивают такое поведение.

Измените вашу переменную на

var appSes:ArrayCollection = new ArrayCollection(event.result);
dg.dataProvider = appSes;

Я склонен связывать свои взгляды с объектами модели, а не явно устанавливать их, как вы. Преимущество в том, что если я создаю новый экземпляр ArrayCollection (скажем, при обновлении данных с сервера), все корректно обновляется без каких-либо дополнительных усилий с моей стороны.

Таким образом, я бы сделал:

<local:CheckBoxDataGrid id="dg" dataProvider="{appSes}" ....
...