【问题标题】:Prevent Flex DataGrid mix events防止 Flex DataGrid 混合事件
【发布时间】:2013-08-01 09:01:24
【问题描述】:

我的 Datagrid 有以下代码:

    <s:DataGrid id="proveedoresGrid" top="10" bottom="10" width="426"
            creationComplete="proveedoresGrid.addEventListener('editIconClicked', itemRendererEditClickHandler);proveedoresGrid.addEventListener('deleteIconClicked', btn_eliminar_proveedor_clickHandler);"
            dataProvider="{proveedoresModel.modelo.arrayProveedores}"
            gridClick="editProveedor(event)"
            horizontalCenter="-255" requestedRowCount="4">
    <s:columns>
        <s:ArrayList>
            <s:GridColumn                       headerText="Edit" width="50" itemRenderer="renderers.EditGridRender" rendererIsEditable="false"></s:GridColumn>
            <s:GridColumn dataField="proveedor" headerText="Proveedor" width="370" editable="false"></s:GridColumn>
        </s:ArrayList>
    </s:columns>
</s:DataGrid>

嗯,在第一列中,我有一个 itemrenderer,它显示两个图标“编辑和删除”,并且根据图标点击,它调度一个事件。问题是这样的Datagrid 还有另一个通用事件“gridClick”。单击第一列中的单元格后,“gridClick”事件始终有效,并且应该适用于不属于第一列的任何其他单元格。

我怎样才能做到这一点?

谢谢。

编辑:

ItemRenderer

<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true"
                width="50" height="30">

<fx:Metadata>
    [Event(name="editIconClicked")]
</fx:Metadata>

<fx:Script>
    <![CDATA[
        import events.EditItemEvent;

        import mx.controls.Alert;
        import mx.controls.DataGrid;
        override public function prepare(hasBeenRecycled:Boolean):void {}

        protected function btn_edit_clickHandler(event:MouseEvent):void {
            event.stopImmediatePropagation();
            event.stopPropagation();
            dispatchEvent(new Event("editIconClicked", true, true));
        }
        protected function btn_delete_clickHandler(event:MouseEvent):void {
            event.stopImmediatePropagation();
            event.stopPropagation();
            dispatchEvent(new Event("deleteIconClicked", true, true));
        }

    ]]>
</fx:Script>

<s:HGroup width="100%" height="24" top="3" gap="1">

    <s:Image id="btn_edit" horizontalCenter="0"
             source="@Embed('assets/images/edit_icon.png')"
             verticalCenter="0"
             click="btn_edit_clickHandler(event)"/>

    <s:Image id="btn_delete" horizontalCenter="0" 
             source="@Embed('assets/images/delete_icon.png')"
             verticalCenter="0"
             click="btn_delete_clickHandler(event)"/>

</s:HGroup>

【问题讨论】:

  • 您能说得更具体些吗?你有什么问题?这两个事件是否正确生成?
  • 我希望能够区分 gridClick 事件和来自 itemRenderer 的事件,这些事件是在单击第一列的单元格时启动的。在这种情况下,两个事件都会启动。
  • 但是事件是不同的,你可以通过它们的名字来区分它们,不是吗?
  • 你能发布你的ItemRenderer的代码吗?
  • 我可以区分它们,但事实是这两个事件已启动。 @Anton 我已经发布了 ItemRenderer 代码。

标签: actionscript-3 apache-flex datagrid flex4.5


【解决方案1】:

至少我可以解决我的问题。

我不知道在单击 DataGrid 时我可以获得 columnIndex 并基于此,我可以阻止 GridClick 事件运行,如果 columnIndex 为 0,则意味着两者之一图片被点击了。

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2012-01-20
    • 2015-06-16
    • 2012-03-02
    • 2014-01-26
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多