首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dgrid行和双击事件

dgrid行和双击事件
EN

Stack Overflow用户
提问于 2015-08-13 20:29:00
回答 1查看 2.1K关注 0票数 4

我有一个选择模式为toggle.的德格栅表我的要求之一是实现对行的双击以触发函数。

以下是我所拥有的:

代码语言:javascript
复制
grid.on('.dgrid-content .dgrid-row:dblclick', function () {
    window.alert('Hello world!');
});

问题是双击还会导致选择事件dgrid-selectdgrid-deselect触发,因为它还注册了两个要选择的单次单击。

我尝试过添加此代码,但它不像预期的那样工作:

代码语言:javascript
复制
var timer;

grid.on('.dgrid-content .dgrid-row:click', function (event) {
    var row = this;
    if (timer) {
        event.preventDefault();
        event.stopPropagation();
        event.stopImmediatePropagation();
        clearTimeout(timer);
    } else {
        timer = window.setTimeout(function() {
            // something to make the click go through?
            row.emit('something here');
            clearTimeout(timer);
        }, 250);
    }
});

有办法做到这一点吗?

我咨询过如何在元素上同时使用onclick和ondblclick?,但在我的案例中,答案似乎行不通。

我还看过misc实用程序,也许我需要的是debounce函数,但我不知道如何使用它。

EN

回答 1

Stack Overflow用户

发布于 2020-09-23 13:42:05

您可以使用来自Dgrid的函数rowcell

代码语言:javascript
复制
 define([
     "dojo/_base/declare",
     "dojo/_base/lang", // hitch
     "dgrid/OnDemandGrid"
 ], function (declare, lang, OnDemandGrid){
     return declare(OnDemandGrid, {

         _onSingleClickAction: function (event) {
             var row = this.row(event), // dgrid/Grid methods
                 cell = this.cell(event);

             /********************
             * WORKING WITH DATA *
             ********************/
         }, // _onSingleClickAction

         _onDblClickAction: function (event) {
             var row = this.row(event), // dgrid/Grid methods
                 cell = this.cell(event);

             /********************
             * WORKING WITH DATA *
             ********************/
         }, // _onDblClickAction

         postCreate: function () {
             this.inherited(arguments);

             this.on(".dgrid-content .dgrid-row:dblclick", lang.hitch(this, "_onDblClickAction"));
             this.on(".dgrid-content .dgrid-row:click", lang.hitch(this, "_onSingleClickAction"));
         } // postCreate
     }); // declare
 }); // define

最后类别定义:

代码语言:javascript
复制
 define([
     "dojo/_base/declare",
     "dojo/_base/lang", // hitch
     "dgrid/OnDemandGrid"
 ], function (declare, lang, OnDemandGrid){
     return declare(OnDemandGrid, {

         onDblClick: function (row) {  // empty method for definition in childs
             console.log(row.id);      // record id from the store
             console.log(row.data);    // full object from the store
             console.log(row.element); // DOM element
         },

         _onDblClick: function (event) { // private method
             this.onDblClick(this.row(event)); // extract data from event
         }, // _onDblClick

         postCreate: function () {
             this.inherited(arguments);

             this.on(".dgrid-content .dgrid-row:dblclick", lang.hitch(this, "_onDblClick"));
         } // postCreate
     }); // declare
 }); // define

1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31997834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档