2013-07-31 7 views
0

내가 가지고 내에서 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> 

+0

좀 더 구체적인가요? 너의 문제는 무엇인가? 두 이벤트가 제대로 생성 되었습니까? – Anton

+0

첫 번째 열의 셀을 클릭했을 때 시작된 itemRenderer에서 gridClick 이벤트와 이벤트를 구별 할 수 있기를 원합니다. 이 상황에서 두 이벤트가 시작됩니다. – Apalabrados

+0

하지만 이벤트가 다르므로 이름을 통해 이벤트를 구별 할 수 있습니까? – Anton

답변

0

은 적어도 나는 내 문제를 해결할 수 있습니다.

나는이에 데이터 그리드 및 기반을 클릭 할 때 나는 columnIndex에를 얻을 수 있다는 것을 알고하지 않았다, 나는 GridClick 이벤트 실행 및 경우에 columnIndex에이 두 이미지 중 하나를 클릭 한 것을 의미한다 0 있다고 방지 할 수있다.