2011-07-08 9 views
10

Mam 4 siatki, które mają włączone plugin drag and drop. Ich początkowa siatka zależy od wartości z bazy danych o nazwie state_id.Extjs synchronizowanie sklepu daje mi url jest niezdefiniowany błąd w określonych warunkach

Po upuszczeniu zaznaczonego wiersza na nową siatkę aktualizuję wartość state_id, a następnie powiadamam ją, aby zsynchronizowała się z bazą danych i zaktualizowała wartość dla danego elementu.

enter image description here

Działa to dobrze dla większości. Mam ten adres URL jest niezdefiniowany błąd, gdy dodaje się dzieje

  1. kliknięć użytkownik przeciąga rzędzie A z siatki 1 do siatki 2
  2. użytkownik przeciąga wiersza A z siatki 2 do siatki 1
  3. Błąd! Url niezdefiniowany.

Ten błąd pojawia się tylko wtedy, gdy pierwszy element dodawany do siatki pochodzi z tej samej siatki.

  1. kliknięcia użytkownik przeciąga wierszy A z siatki 1 do siatki 2
  2. kliknięcia użytkownik przeciąga rzędzie B z siatki 2 do siatki 1
  3. kliknięcia użytkownik przeciąga wierszy A z siatki 2 do siatki 1
  4. pracuje jako zamierzony!

spadek obsługi zdarzeń w moim kontrolera:

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(); 
}, 

Wszelkie pomysły na to, co jest tego przyczyną i jak to naprawić?

Dzięki

+0

W swoim pierwszym przypadku testowym, czy rzeczy działają zgodnie z oczekiwaniami, jeśli "Użytkownik przeciąga wiersz A z siatki 2 do siatki 3"? –

+0

Tak, działa dobrze. Wydaje się, że problem powraca do pierwotnej lokalizacji, zanim cokolwiek innego znajdzie się w tej samej (oryginalnej) lokalizacji. – Robodude

+1

Jeśli błąd to "nieokreślony adres URL", wydaje się, że problemu nie ma, ale w rzeczywistych definicjach sklepu. Zauważ, że czasami ten rodzaj błędu może wystąpić z powodu używania identyfikatorów w definicjach klas, ponieważ identyfikatory muszą być unikatowe i podczas wykonywania wystąpień będą występować dziwne awarie. –

Odpowiedz

1

mogę sugerować, że korzystanie z jednego sklepu, zamiast trzech, a po prostu dodać trzy równe siatek wszystkie przy użyciu tego samego sklepu, ale z filtrowaniem na stan =?

W ten sposób można po prostu zaktualizować status po upuszczeniu, odświeżyć dwie zaangażowane siatki i zsynchronizować jeden sklep.

0

Wygląda na to, że za każdym razem, gdy wywoływana jest funkcja dropit, synchronizujesz tylko jeden sklep. Nie powinnaś synchronizować sklepu, z którego pochodzi i sklepu, w którym został upuszczony? Wydaje mi się, że rekordy usuwania fantomów nadal byłyby zawieszane w oryginalnym magazynie, to spowodowałoby powstanie dwóch rekordów po przeciągnięciu tego rekordu, ponieważ składnica źródłowa nie była nigdy zsynchronizowana, aby usunąć ten rekord.

Powiązane problemy