extjs4 - 过滤网格拖放

时间:2011-10-17 10:22:37

标签: extjs extjs4

我有2个网格,启用了拖放功能。

在其中一个网格上,我需要检查掉落的元素并过滤掉其中的一些元素。

我无法弄清楚如何做到这一点。 grid dd插件有2个事件:beforedrop和drop。

在beforedrop事件期间,我可以检查每个丢弃的记录是否正常,但是没有明显的方法来选择要删除的记录的子集。 我似乎唯一的选择是,如果我想完全取消丢弃,则返回false - 而我只想删除一个选择的记录子集。

掉落事件似乎为时已晚。

知道我该怎么做吗?

1 个答案:

答案 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;
}

(在我的情况下,条件是测试记录是否已经在我的本地网格存储中,但可能是其他任何内容)

也许我正在重新发明轮子。有人有更好的解决方案吗?