OpenLaszlo中的grid的双击事件

来源:互联网 发布:昆明理工大学网络教育 编辑:程序博客网 时间:2024/05/29 04:46

因为在开发中遇到要使用表格的双击事件 ,虽然文档里面有grid的doubleClick事件,但是不起作用,在Openlaszlo的官方论坛里面也有说到解决办法,基本思路是通过利用2次单击的事件差来执行一些事件,但是在随后的开发中发现那样的方法有缺陷。所有后来自己写了个grid的双击事件onRowDoubleClicked(即方法一)。(其实对表格里面的数据拖拉操作都可以,比如把表格a的某一item拖到表格b中(可以是移动操作也可以是复制操作));第二种方法实现双击事件:通过判断两次的单击时间差来实现双击事件的方法,但是这种方法经过我以前项目的实践,存在一定的问题,比如在单击和双击事件同时存在的时候就会出现等等,强烈建议大家最好不要用这种方法

方法一代码如下:

使用示例:

<?xml version="1.0" encoding="UTF-8"?>
<canvas debug="true">
  <include href="./xgrid/xgrid.lzx"/>
 
    <dataset name="dsTest" src="./xmldatas/data.xml" />
   
    <xgrid x="50" y="50" height="150" width="600" datapath="dsTest:/datas" fontsize="12" multiselect="false" showhlines="true">
    <gridtext text="序号" editable="false" width="50" datapath="position()" resizable="false" sortable="false" textalign="center"/>
    <gridtext datapath="@name" editable="false" width="220" textalign="center">名称</gridtext>
    <method event="oninit">
      this._scrx.setVisible(false);
    </method>
    <method event="ondata">
      var showvbar = (this.getNumItems() &gt;5);
      this._scrx.setVisible(showvbar);
    </method>
    <method event="onRowDoubleClicked" args="items">
      var selected = this.getSelection();
      if(selected!=null){
       var name = selected.data.getAttr("name");
       Debug.write("result of onRowDoubleClicked : name = " name);
      }
    </method>
 </xgrid>
 
</canvas>

 

xgrid.lzx:
<library>
        <include href="xgridrow.lzx" />
        <class name="xgrid" extends="grid" _rowclass="xgridrow">           
                <method name="dorowdblclick" args="item">
                        this.onRowDoubleClicked.sendEvent(item);
                </method>   
           <attribute name="onRowDoubleClicked" value="null"/>
        </class>
</library>

data.xml:

<datas>
   <data name="name1"/>
   <data name="name2"/>
   <data name="name3"/>
   <data name="name4"/>
   <data name="name5"/>
   <data name="name6"/>
</datas>

 

xgridrow.lzx:
<library>
 <class name="xgridrow" extends="basegridrow">
  <method event="ondblclick">
   ownerGrid.dorowdblclick(this);
  </method>
 </class>
</library>
原创粉丝点击