Extjs 从阵列中删除要插入网格的对象拖放

Extjs 从阵列中删除要插入网格的对象拖放,extjs,drag-and-drop,Extjs,Drag And Drop,您好,我有两个网格,我通过拖放将记录从第一个网格(带有字段id、作者、价格的书籍)传输到第二个网格(带有字段id、作者、价格、新价格的折扣),所有这些都很好,但我想要下一个:当我从网格(书籍)拖动记录并拖放到带有相同字段“id”(这两个表中)的网格(折扣)记录时未插入网格(折扣)。我有一个对象数组,如何使表(折扣)中已存在的具有“id”的记录不被插入。 我很高兴: listeners: {beforeDrop: function(node, data, overModel, dropPosit

您好,我有两个网格,我通过拖放将记录从第一个网格(带有字段id、作者、价格的书籍)传输到第二个网格(带有字段id、作者、价格、新价格的折扣),所有这些都很好,但我想要下一个:当我从网格(书籍)拖动记录并拖放到带有相同字段“id”(这两个表中)的网格(折扣)记录时未插入网格(折扣)。我有一个对象数组,如何使表(折扣)中已存在的具有“id”的记录不被插入。 我很高兴:

 listeners: {beforeDrop: function(node, data, overModel, dropPosition, dropHandlers) {}

但是你在那里写了什么?谢谢

在您的目标网格
viewconfig
中,您可以为事件定义侦听器。在这个侦听器中,您可以获取被拖动记录的id,并检查该id是否不在数组中

数组定义:

var forbidenIds = [2, 3];
目标网格视图配置:

viewConfig: {
    plugins: {
        ptype: 'gridviewdragdrop',
        dropGroup: 'group1',
    },
    listeners: {
        beforedrop: function(node, data) {
            // get id of dragged record
            var recordId = data.records[0].getId();                
            // search for record id in array
            var index = Ext.Array.indexOf(forbidenIds, recordId);
            return index === -1 ? true : false;
        }
    }
},

例如:

这将对单个记录有效,但我允许用户选择多个记录,在这种情况下,其中一些记录存在于禁止列表中,而另一些不存在于此列表中。如果你知道如何处理多重选择,那么请告诉我。