2013-07-31 36 views
0

我有我的Datagrid下面的代码:防止Flex的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> 

好,在第一列我含有S 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> 

+0

你会更具体吗?你有什么问题?这两个事件是否正确生成? – Anton

+0

我希望能够区分gridClick事件和从第一列单元格单击时启动的itemRenderer中的事件。在这种情况下,两个事件都会启动。 – Apalabrados

+0

但事件是不同的,你可以通过他们的名字区分他们,不是吗? – Anton

回答

0

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

我不知道,点击这个DataGrid和基础的时候才能得到columnIndex,我可以防止GridClick事件运行,万一器的columnIndex为0则意味着被点击的两个图像之一。