У меня, похоже, проблема с созданием элементов, как ожидалось, в результате чего не были запущены события-слушатели.Элементы в DataGrid не инициализированы, как ожидалось
Я использую столбец DataGrid флажков, как показано здесь: (. fwctrl это пространство имен внутренней библиотеки)
<mx:DataGrid id="gridComponents" height="100%">
<mx:columns>
<fwctrl:DataGridCheckBoxColumn id="colChkBox" width="20" selectionChanged="onGridChbBoxChange(event)" />
<mx:DataGridColumn headerText="Components" dataField="name" width="250"/>
</mx:columns>
</mx:DataGrid>
А вот что MXML из fwctrl: DataGridCheckBoxColumn выглядит следующим образом:
<mx:DataGridColumn xmlns:mx="http://www.adobe.com/2006/mxml" resizable="false" xmlns:grid="fwctrl.grid.*" xmlns:CheckBoxColumn="fwctrl.grid.CheckBoxColumn.*">
<mx:Metadata>
[Event(name="selectionChanged", type="fwctrl.grid.CheckBoxColumn.DataColumnCheckBoxEvent")]
</mx:Metadata>
<mx:Script>
<![CDATA[
...
]]>
</mx:Script>
<mx:headerRenderer>
<mx:Component>
<CheckBoxColumn:CheckBoxHeaderRenderer textAlign="center" click="checkboxheaderrenderer1_clickHandler(event)">
<mx:Script>
...
</mx:Script>
</CheckBoxColumn:CheckBoxHeaderRenderer>
</mx:Component>
</mx:headerRenderer>
<mx:itemRenderer>
<mx:Component>
<mx:Box horizontalAlign="center"
verticalAlign="middle" enabled="{outerDocument.isEnabled}">
<mx:Script>
<![CDATA[
...
protected function checkBox_initializeHandler(event:FlexEvent):void
{
trace("init checkbox");
}
]]>
</mx:Script>
<mx:CheckBox id="checkBox" click="onCheckBoxClick()" change="onChange(event)" initialize="checkBox_initializeHandler(event)"/>
</mx:Box>
</mx:Component>
</mx:itemRenderer>
CheckBoxHeaderRenderer - это класс, который наследуется от флажка.
с помощью MXML выше я связать ArrayCollection
с данными обеспечивают, выполнив: gridComponents.dataProvider = coll;
Имея checkBox_initializeHandler
событие неизбежно, я ожидаю увидеть сообщение распечатанный для каждого элемента в моей коллекции.
В действительности, сообщение будет отображаться только для элемента, который не «выпадает из сетки», т. Е. Если имеется полоса прокрутки (из-за большого количества элементов, которые отображаются), элементы, которые находятся ниже нижней части сетки (т. е. те, которые нужно прокрутить) не будут печатать сообщение.
Это также означает, что они созданы неправильно и что click="onCheckBoxClick()"
неправильно подключен и что onCheckBoxClick()
не запускается.
Почему это происходит и как я могу это исправить?
Не могли бы вы добавить более подробную информацию о своей функции dataProvider и вашей функции onCheckBoxClick()? Я могу предложить лучший совет, если вы опубликуете их тоже. – Brian