【发布时间】:2011-05-27 23:23:30
【问题描述】:
拥有一个带有简单自定义 mxadvanceddatagriditemrenderer 的高级数据网格。我希望渲染器仅在悬停或选择行时显示图像。现在我通过在我的图像上使用 excludeFrom="normal" 标记来做到这一点。
当我将状态悬停并正常定义时,它工作正常(减去选定状态,选择时消失)。当我尝试定义选定状态时,单击行时出现以下错误:
RangeError: Index 0 is out of range.
at spark.components::Group/checkForRangeError()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\Group.as:1106]
at spark.components::Group/setElementIndex()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\Group.as:1265]
at spark.components::Group/addElementAt()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\Group.as:1167]
at mx.states::AddItems/addItemsToContentHolder()[E:\dev\4.x\frameworks\projects\framework\src\mx\states\AddItems.as:737]
at mx.states::AddItems/apply()[E:\dev\4.x\frameworks\projects\framework\src\mx\states\AddItems.as:545]
[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:9961] ... etc
有没有人经历过这种情况或知道解决方案?
谢谢
编辑:涉及的代码非常简单:
<s:MXAdvancedDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" focusEnabled="false">
<fx:Script>
<![CDATA[
import mx.collections.IList;
protected function removeRow(event:MouseEvent):void
{
var ind :int = IList(parentDocument.dataGrid.dataProvider).getItemIndex(data);
IList(parentDocument.dataGrid.dataProvider).removeItemAt(ind);
}
]]>
</fx:Script>
<s:states>
<s:State name="normal" />
<s:State name="hovered"/>
<s:State name="selected"/>
</s:states>
<mx:Image id="removeButton" excludeFrom="normal" source="@Embed(source='../assets/icons/close_icon.gif')" click="removeRow(event)" width="10" height="10" alpha=".5" toolTip="{resourceManager.getString('localization', 'REMOVE')}"/>
</s:MXAdvancedDataGridItemRenderer>
【问题讨论】:
-
给我们看一些代码。我们很难仅根据错误消息来调试您的自定义 itemRenderer。
标签: apache-flex actionscript itemrenderer advanceddatagrid