zoukankan      html  css  js  c++  java
  • Adobe Flex迷你教程 — DataGrid滚动条单击异常处理

      我们对于DataGrid一般有这样的需求:
            单击DataGrid的某一行,拿到这行的数据,进行下步动作(我们为此注册了一个click函数dtGrid_clickHandler(event))。
          结果:有时我们数据比较多,DataGrid自动产生了滚动条。
                   我们本想按住滚动条滑动,可是不小心单击了它,同样也会触发dtGrid_clickHandler(event)函数。
                    这样我们里面写的 trace(dtGrid.selectedItem.value);就会出错。
         原因分析:仔细研究后发现 原来滚动条是个Button,这个Button在DataGrid的上面,单击这个Button后,下面的DataGrid冒泡的也拿到了单击事件。
                        所以,加上 判断 if(event.target is Button)  reutrn;
    <?xml version="1.0"?>
    <!--
    * Created with IntelliJ IDEA.
    * User: DongYang
    * Date: 13-3-12
    * Time: 上午12:07
    * Progress every day a little more -->
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                  xmlns:s="library://ns.adobe.com/flex/spark">
       <s:DataGrid id="dtGrid" width="180" height="129" top="10" left="10"
                   dataProvider="{_data}" click="dtGrid_clickHandler(event)">
           <s:columns>
               <s:ArrayList>
                   <s:GridColumn dataField="name"/>
               </s:ArrayList>
           </s:columns>
       </s:DataGrid>
       <s:Button id="initData" x="366" y="57" label="添加数据" click="initData_clickHandler(event)"/>
       <fx:Script><![CDATA[
           import mx.collections.ArrayCollection;

           [Bindable]
           private var _data:ArrayCollection;

           private function dtGrid_clickHandler(event:MouseEvent):void {
               if (event.target is Button || null == dtGrid.selectedItem)    return;
               trace(dtGrid.selectedItem.value);
           }

           private function initData_clickHandler(event:MouseEvent):void {
               var array:ArrayCollection = new ArrayCollection();
               for (var i:int = 1; i < 10; i++) {
                   array.addItem({name: "test" + i, value: i});
               }
               _data = array;
           }
           ]]></fx:Script>
    </s:Application>
  • 相关阅读:
    NHibernate4使用Oracle.ManagedDataAccess.dll连接oracle及配置多个数据库连接
    Myeclipse闪退故障
    Log4j快速使用精简版
    Eclipse快捷键 10个最有用的快捷键
    Java compiler level does not match解决方法
    ArcMap常用VBA
    firefox浏览器中silverlight无法输入问题
    C#导入Excel遇到数字字母混合列数据丢失解决
    ArcMap计算PolyLine中点VBA
    Apple Watch 开发详解
  • 原文地址:https://www.cnblogs.com/yangpigao/p/2954918.html
Copyright © 2011-2022 走看看