2

我想在 dgrid 中实现 DnD 的 drop 事件的自定义行为。我有以下 gdrig 声明:

this.grid = new (declare([OnDemandGrid, Editor, DnD, DijitRegistry]))({
                        region: "center",
                        collection: this.store,
                        selectionMode: 'single',
                        columns: ...
                    }, this.gridNode);

                    this.grid.startup();

我真正想要的很简单:在网格中拖放一行(重新排序 dgrid 中的项目)后,我想触发一个事件(函数 - 比如说获取当前行并对其进行操作等)。问题是我不知道如何覆盖 onDrop 事件或拖动事件。有人可以给我一个提示。

4

1 回答 1

0

有一个简单的机制可以替换 onDrop,但是如何保留和扩展现有的 onDrop 功能完全不明显。这是因为 onDrop 存在于网格创建的名为DnDSource的类中。幸运的是,这是一个可以注入的依赖项(通过一个名为 dndConstructor 的属性)。这是我的解决方案:

var MyDnDSource = declare([DnDSource], {
    onDrop: function() {
        this.inherited(arguments); // This is the original onDrop functionality
        console.log('This is my additional onDrop functionality');        
  }
});

this.grid = new (declare([OnDemandGrid, Editor, DnD, DijitRegistry]))({
                    dndConstructor: MyDnDSource,
                    region: "center",
                    collection: this.store,
                    selectionMode: 'single',
                    columns: ...
                }, this.gridNode);

this.grid.startup();
于 2017-03-30T09:13:51.313 回答