我似乎遇到了未按預期創建項目的問題,導致事件偵聽器未被觸發。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>
這裏是什麼fwctrl的MXML: 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 2014-09-23 15:33:54