flex Datagrid数据列双击事件实现

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

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

   
                    
                                                                    dataField="selected" headerText="Select"   
                                           itemRenderer="views.common.checkBox.CheckBoxItemDataRenderer"   
                                           headerRenderer="views.common.checkBox.CheckBoxHeaderRenderer"/>
                        
                        
                        
                        
                        
                        
                    

                

上面是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)