extjs4 - перетащить сетку фильтра - PullRequest
0 голосов
/ 17 октября 2011

У меня есть 2 сетки с включенным перетаскиванием.

На одной из сеток мне нужно проверить упавшие элементы и отфильтровать некоторые из них.

Я не могу понять, как это сделать.Плагин grid dd имеет 2 события: beforedrop и drop.

Во время события beforedrop я могу проверить, в порядке ли каждая из удаленных записей, но нет очевидного способа выбрать подмножество удаляемых записей.Мне кажется, что единственный вариант - вернуть false, если я хочу полностью отменить удаление - тогда как я хочу отбросить только выбранный набор записей.

Событие удаления кажется слишком поздним.

Любая идея, как я могу это сделать?

1 Ответ

2 голосов
/ 17 октября 2011

Хорошо, я нашел решение этой проблемы.

Идея состоит в том, чтобы заменить свойство records параметра data в beforedrop.

(Свойство records в основном представляет собой массив Модель / Записи, отброшенные в сетке)

Итак, в этом примере конфигурации для сетки:

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

(в моем случае условие состоит в том, чтобы проверить, находится ли запись уже в моем локальном сеточном хранилище, но может быть что-то еще)

Может быть, я заново изобретаю колесо.У кого-нибудь есть лучшее решение?

...