我有2个网格,启用了拖放功能。
在其中一个网格上,我需要检查掉落的元素并过滤掉其中的一些元素。
我无法弄清楚如何做到这一点。 grid dd插件有2个事件:beforedrop和drop。
在beforedrop事件期间,我可以检查每个丢弃的记录是否正常,但是没有明显的方法来选择要删除的记录的子集。 我似乎唯一的选择是,如果我想完全取消丢弃,则返回false - 而我只想删除一个选择的记录子集。
掉落事件似乎为时已晚。
知道我该怎么做吗?
答案 0 :(得分:2)
好的,我找到了解决问题的方法。
我们的想法是替换beforedrop中 data 参数的记录属性。
(记录属性基本上是网格上放置的模型/记录数组)
因此,使用此示例配置网格:
viewConfig: {
plugins: {
dropGroup: 'items',
ptype: 'gridviewdragdrop'
},
listeners: {
beforedrop: this.onBeforeDropItem,
scope:this
}
}
beforedrop的处理程序如下所示:
,onBeforeDropItem: function(node, data, overModel, dropPosition, dropFunction, options)
{
var final_records = [];
nrecords = data.records.length;
for(var i=0;i<nrecords;i++)
{
var record = data.records[i];
if (/* your condition goes here */)
{
final_records.push(record);
}
}
data.records = final_records;
}
(在我的情况下,条件是测试记录是否已经在我的本地网格存储中,但可能是其他任何内容)
也许我正在重新发明轮子。有人有更好的解决方案吗?