您的位置:首页 > 其它

flex Datagrid数据列双击事件实现

2016-07-05 08:45 351 查看
最近做flex的项目遇到了一个问题:要实现双击DataGrid的一行数据,将该行数据赋值到打开的新窗口中。

在网上找了好久,发现要么答非所问,要么就是只言片语。所以我想通过CSDN这个平台把我的经验总结一下。先贴一下代码:

<mx:DataGrid id="dg" width="100%" height="100%" rowCount="12" doubleClickEnabled="true" itemDoubleClick="readMail(null)" horizontalScrollPolicy="on" dataProvider="{dataArr}">

<mx:columns >

<mx:DataGridColumn textAlign="center" width="40"

dataField="selected" headerText="Select"

itemRenderer="views.common.checkBox.CheckBoxItemDataRenderer"

headerRenderer="views.common.checkBox.CheckBoxHeaderRenderer"/>

<mx:DataGridColumn headerText="ID" dataField="REC_ID" headerStyleName="headerStyle" visible="true"/>

<mx:DataGridColumn headerText="系统" dataField="SYS_NM" headerStyleName="headerStyle"/>

<mx:DataGridColumn headerText="名称" dataField="QUERY_NM" headerStyleName="headerStyle"/>

<mx:DataGridColumn headerText="SQL语句" dataField="QUERY_STATEMENT" width="600" headerStyleName="headerStyle"/>

<mx:DataGridColumn headerText="备注" dataField="REMARKS" headerStyleName="headerStyle" />

</mx:columns>

</mx:DataGrid>

上面是flex标签元素datagrid,默认情况下,它的的双击事件是屏蔽的。所以我们要先把双击事件放开,通过属性doubleClickEnabled="true"。

然后,有人可能会直接使用doubleClick属性来设置触发双击事件,这样做会有一个问题,就是无论你双击datagrid的什么位置,都会触发事件,满足不了我们的需求。

最后,看到有个itemDoubleClick属性,这个属性刚好是行数据的双击事件,然后我就立马试了一下,果然好用。

好像捡到宝了。下面是双击事件触发的方法,有一点需要讲一下:

/**

* 双击事件

*/

private function readMail(event:MouseEvent):void

{

if(dg.selectedItem!=null){

var obj:Object = new Object();

//Alert.show("0-"+obj.QUERY_STATEMENT);

obj.title = "编辑查询";

obj.statement = dg.selectedItem.QUERY_STATEMENT;

var editExcuteQuery:EditExcuteQuery = new EditExcuteQuery();

editExcuteQuery.obj = obj;

PopUpManager.addPopUp(editExcuteQuery, this, false);

PopUpManager.centerPopUp(editExcuteQuery);

}else{

Alert.show("空");

}

}

从代码可以看到,我进行了一个判断。原因是什么呢?itemDoubleClick这个双击事件竟然对空行也会起作用,这样就会扰乱我们。因此,在此进行了过滤,在双击数据行的时候才会触发事件,打开新窗口并传值进行。

其实这些对于flex大牛来说可能不算什么,但是对于初涉flex小白来说,可算为难了。而且,flex网上分享的资源少之又少~

最后希望我的经验能帮到其他人,同时也希望大家把自己的经验分享出来

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  flex Datagrid 双击事件