Extjs синхронизации магазина дает мне URL-адрес неопределенной ошибки при определенных условиях - PullRequest
10 голосов
/ 08 июля 2011

У меня есть 4 сетки с включенным плагином перетаскивания. Их начальная сетка зависит от значения в БД, называемого state_id.

Когда я перетаскиваю выбранную строку в новую сетку, я обновляю значение state_id, а затем приказываю ему синхронизироваться с БД и обновляю значение для рассматриваемого элемента.

enter image description here

Это прекрасно работает по большей части. Я получаю этот URL неопределенная ошибка, когда происходит следующее

  1. Пользователь щелкает мышью по строке A из сетки 1 к сетке 2
  2. Пользователь перетаскивает строку A из сетка 2 в сетку 1
  3. ОШИБКА! Веб-сайт не определено.

Эта ошибка, по-видимому, возникает только тогда, когда первый элемент, добавляемый в сетку, изначально пришел из той же сетки.

  1. Пользователь щелкает мышью, перетаскивая строку A из сетки 1 в сетку 2
  2. Пользователь щелкает мышью, перетаскивая строку B из сетки 2 в сетку 1
  3. Пользователь щелкает мышью, перетаскивая строку A из сетки 2 в сетку 1
  4. Работает как задумано!

обработчик события drop внутри моего контроллера:

dropit: function (node, data, dropRec, dropPosition) {
    if (node.dragData.records[0].store.$className == "AM.store.BacklogCards")
    {
        data.records[0].set('state_id', 1);
        this.getBacklogCardsStore().sync();
    }
    else if (node.dragData.records[0].store.$className == "AM.store.InprogressCards")
    {
        data.records[0].set('state_id', 2);
        this.getInprogressCardsStore().sync();
    }
    else if (node.dragData.records[0].store.$className == "AM.store.ReviewCards")
    {
        data.records[0].set('state_id', 3);
        this.getReviewCardsStore().sync();
    }
    else
    {
        data.records[0].set('state_id', 4);
        this.getDoneCardsStore().sync();
    }
    //node.dragData.records[0].store.sync();
},

Любые идеи о том, что вызывает это и как это исправить?

Спасибо

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Могу ли я предложить вам использовать один магазин вместо трех и просто добавить три равные сетки, используя один магазин, но с фильтрацией по состоянию =?

Таким образом, вы можете просто обновить статус по капле, обновить две задействованные сетки и синхронизировать одно хранилище.

0 голосов
/ 07 сентября 2012

Похоже, что когда вызывается ваша функция dropit, вы синхронизируете только один магазин. Разве вы не должны синхронизировать магазин, из которого пришел товар, и магазин, в котором он был сброшен? Мне кажется, что фантомные записи об удалении все еще будут зависать в исходном хранилище, это приведет к тому, что при перетаскивании этой записи будут существовать две записи, так как из хранилища никогда не было синхронизировано удаление этой записи.

...