Доступ к переменной средства визуализации элементов DataGridColumn - PullRequest
2 голосов
/ 01 сентября 2009

Внутри DataGrid у меня есть DataGridColumn, в котором в качестве средства визуализации элементов используется пользовательский компонент. В компоненте у меня есть ArrayCollection, которая хранит набор объектов значений. Моя проблема в том, что я не могу получить доступ к значениям ArrayCollection извне компонента визуализации элементов. Кто-нибудь знает, как можно было бы это сделать? Я разместил фрагмент кода ниже.

<mx:Script>
    <![CDATA[
        // Cannot access arrFiles from here.
    ]]>
</mx:Script>
<mx:DataGrid editable="true">
    <mx:columns>
        <mx:DataGridColumn id="dgcUpload" width="130" headerText="Uploaded Files"
        editable="false">
        <mx:itemRenderer>
        <mx:Component>
                    <mx:VBox>
                        <mx:Script>
                            <![CDATA[
                                [Bindable]public var arrFiles:ArrayCollection = new ArrayCollection();
                            ]]>
                        </mx:Script>
                    </mx:VBox>
        </mx:Component>
        </mx:itemRenderer>
        </mx:DataGridColumn>
    </mx:columns>
</mx:DataGrid>

Возможно ли это?

Заранее спасибо за любую помощь,

Орвилл

Ответы [ 2 ]

1 голос
/ 02 сентября 2009

Я бы создал пользовательский компонент MXML Box как визуализированный с меткой (myLabel) как дочерний элемент. Установите поставщик данных для DataGrid в массив. В пользовательском компоненте MXML переопределите метод set data, который вызывается каждый раз, когда данные отображаются для каждой строки, и присваивайте метке текущее значение, переданное в:

override public function set data(value:Object):void{
         myLabel.text = value.myTextForLabel;
}

Если поле в ArrayCollection (myArrayCollection) всегда одинаково для метки, тогда просто установите для поставщика данных DataGrid значение ArrayCollection и для свойства dataField столбца соответствующее значение (myText):

<mx:DataGrid editable="true" dataProvider="myArrayCollection">
   <mx:columns>
    <mx:DataGridColumn id="dgcUpload" width="130" dataField="myText" headerText="Uploaded Files"
    editable="false">
   </mx:columns>
</mx:DataGrid>
1 голос
/ 01 сентября 2009

Это возможно в зависимости от того, как вы хотите получить к нему доступ. Вы можете получить доступ к свойству конкретного элемента, отображаемого itemRenderer, вызвав функцию itemToItemRenderer в сетке данных. Это дает вам экземпляр этого конкретного itemRenderer, и вы можете вызвать переменную arrFiles для этого элемента.

Вот пример

        protected function datagrid1_clickHandler(event:MouseEvent):void
        {
            var obj:Object = dgcUpload.itemToItemRenderer(dgcUpload.selectedItem);
            var newArray:ArrayCollection = obj.arrFiles;
        }

Я вызываю это, когда что-то нажимается на DataGrid, и я хочу получить доступ к переменной arrFiles для выбранного элемента.

Это то, что вы ищете?

= Ryan

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