DataGrid itemrender - PullRequest
       1

DataGrid itemrender

1 голос
/ 05 февраля 2010

Привет! Я добавил элемент управления с помощью itemrender в свою сетку данных.но есть проблема в том, что во время выполнения это происходит два раза при инициализации и создании события завершения этого элемента управления, который я добавил в свой столбец таблицы данных.

Спасибо Атул Ядав

<?xml version="1.0" encoding="utf-8"?>
<mx:DataGridColumn xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ns1="Component.*" >
<mx:Script>
    <![CDATA[
        [Bindable]
        public var columnID:String="";
        [Bindable]
        public var ColumnData:String="";
]]>
</mx:Script>
     <mx:itemRenderer>
        <mx:Component>
        <ns1:test >
        </ns1:test>
        </mx:Component>
    </mx:itemRenderer>
</mx:DataGridColumn>

имой контрольный код:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" xmlns:ns1="View.*" creationComplete="init(event)">
<mx:Script>
    <![CDATA[
        import mx.controls.Alert;
        private static var arr:Array;
        private function init(e:Event):void{
            if(!arr)
                arr=new Array();
            arr.push(this);
            btn_apply.addEventListener(MouseEvent.CLICK,function(e:Event):void{Alert.show(arr.length.toString());});
        }
    ]]>
</mx:Script>
    <mx:Button label="Button" id="btn_apply"/>


</mx:VBox>

когда я получаю длину arr, это дает мне только двойной счет.

1 Ответ

0 голосов
/ 05 февраля 2010

Если я правильно понимаю, второй фрагмент кода - это пользовательский инструмент визуализации элементов, для которого в первом фрагменте создается экземпляр <ns1:test>.

Элемент управления DataGrid будет создавать экземпляры вашего средства визуализации по мере необходимости - у вас нет никакого контроля над тем, сколько экземпляров будет создано. Таким образом, хотя у вас может быть одна строка в столбце, Сетка данных, скорее всего, создала более одного экземпляра компонента визуализации. В результате, как вы видите, создание завершено, вызывается более одного раза, и вы получаете больше элементов в статическом массиве, чем ожидаете. При разработке средств визуализации элементов вы должны принять во внимание следующее: вы не управляете их созданием и что они перерабатываются платформой. Лучший подход - сделать их максимально безгражданскими.

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