我似乎遇到了未按预期创建项目的问题,导致事件侦听器未被触发。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