FLEX: Datagrid, как выбрать элемент с учетом значений моего атрибута данных - PullRequest
0 голосов
/ 06 мая 2010

Я использую пользовательский компонент CheckBoxList DataGrid (http://blogs.adobe.com/aharui/2008/02/checkbox_selection_in_datagrid.html)) и в качестве dataProvider у меня есть ArrayCollection с такими элементами:

name="item name" selected="true"

Я бы хотел, чтобы список CheckBox обновлялся, когда для выбранного атрибута установлено значение false или true в модели данных.

спасибо

1 Ответ

0 голосов
/ 06 мая 2010

Самым простым способом является refresh ArrayCollection после обновления некоторых объектов внутри него. В конце приведен пример этого.

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

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       width="426" height="243"
                       showStatusBar="false">

    <fx:Script>
        <![CDATA[
            import mx.collections.ICollectionView;
            import mx.controls.Alert;
            import mx.events.CollectionEvent;
            import mx.events.FlexEvent;

            protected function randomizeData_click(event:MouseEvent):void
            {
                for each (var o:Object in data)
                {
                    o.name = Math.round(Math.random() * 100);
                    o.selected = Math.random() < 0.5;
                }

                data.refresh();
            }

        ]]>
    </fx:Script>

    <fx:Declarations>
        <s:ArrayCollection id="data">
            <fx:Object name="1" selected="false" />
            <fx:Object name="2" selected="false" />
            <fx:Object name="3" selected="true" />
            <fx:Object name="4" selected="false" />
        </s:ArrayCollection>
    </fx:Declarations>

    <mx:DataGrid id="dataGrid" dataProvider="{data}" top="10" left="10" bottom="39" right="10">
        <mx:columns>
            <mx:DataGridColumn headerText="Item" dataField="name"/>
            <mx:DataGridColumn headerText="Selected" dataField="selected" itemRenderer="mx.controls.CheckBox" />
        </mx:columns>
    </mx:DataGrid>

    <s:Button label="Randomize Data" right="10" bottom="10" click="randomizeData_click(event)"/>
</s:WindowedApplication>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...