这将是一个简单的问题,但属性'selectable'设置为'false',因此selectedItem始终为null。
在每行中我有3个按钮。单击按钮时,我需要提取与单击行相对应的数据。
任何想法我该怎么做?感谢。
答案 0 :(得分:1)
我假设您正在使用MX DataGrid,对吗?
在itemRenderer中,引用listData属性并将其转换为DataGridListData。
单击按钮时,会调度包含rowIndex的自定义事件。您应该能够使用rowIndex从dataProvider中获取所选项。
答案 1 :(得分:0)
这是我的项目渲染器
<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer 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="true">
<fx:Script>
<![CDATA[
public var parentView:Object;
public static function getEditDeleteRenderer(view:Object):ClassFactory{
var editDeleteRenderer:ClassFactory = new ClassFactory(EditDeleteRenderer);
editDeleteRenderer.properties = { parentView:view };
return editDeleteRenderer;
}
function editItem():void{
parentView.editItem(data);
}
function deleteItem():void{
parentView.deleteItem(data);
}
]]>
</fx:Script>
<mx:HBox paddingLeft="5">
<mx:Image source="assets/edit.png" click="editItem()" />
<mx:Image source="assets/delete.png" click="deleteItem()" />
</mx:HBox>
</s:MXDataGridItemRenderer>
这是我使用它的方式
<mx:DataGridColumn headerText="Activity" width="100" itemRenderer="{EditDeleteRenderer.getEditDeleteRenderer(this)}" />
public function editItem(foo:Foo){
// do edit operation
}
public function deleteItem(foo:Foo):void{
// do delete operation
}