2011-07-08 17 views
10

Tengo 4 cuadrículas que tienen habilitado el complemento de arrastrar y soltar. Su grilla inicial depende de un valor del db llamado state_id.Extjs sincronizar una tienda me da una URL es un error indefinido en condiciones específicas

Cuando dejo caer la fila seleccionada en una nueva grilla, actualizo el valor de state_id y luego digo que se sincronice con la base de datos y actualice el valor para el elemento en cuestión.

enter image description here

Esto funciona bien en su mayor parte. Me sale este error URL es indefinido cuando ocurre lo siguiente

  1. El usuario hace clic arrastra la fila A de la rejilla 1 a 2 rejilla
  2. usuario arrastra la fila A partir rejilla 2 de cuadrícula 1
  3. ERROR! Url undefined.

Este error solo parece ocurrir cuando el primer elemento que se agrega a la cuadrícula proviene originalmente de la misma cuadrícula.

  1. clics usuario arrastra la fila A de la rejilla 1 a la red 2
  2. clics usuario arrastra la fila B de la rejilla 2 a la red 1
  3. clics usuario arrastra la fila A de la rejilla 2 a la red 1
  4. Works como ¡destinado a!

gota controlador de eventos dentro de mi controlador:

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

¿Alguna idea sobre lo que está causando esto y cómo solucionarlo?

Gracias

+0

En su primer caso de prueba, ¿funcionan las cosas como se esperaba si "El usuario arrastra la fila A de la cuadrícula 2 a la cuadrícula 3"? –

+0

Sí, funciona bien. El problema parece ser cuando vuelve a su ubicación "original" antes de que cualquier otra cosa se coloque en la misma ubicación (original). – Robodude

+1

Si el error es "url indefinido", parece que el problema no está allí, sino en las definiciones de la tienda real. Tenga en cuenta que a veces este tipo de error puede ocurrir debido al uso de ID en las definiciones de clases, ya que los ID deben ser únicos y, por lo tanto, se producirán extraños errores al crear instancias de objetos. –

Respuesta

1

puedo sugerir que use una tienda en lugar de tres, y sólo tiene que añadir tres cuadrículas iguales todos usando la misma tienda, pero con filtrado en estado =?

De esta manera, simplemente puede actualizar el estado al soltar, actualizar las dos cuadrículas involucradas y sincronizar la tienda única.

0

Parece que cada vez que se invoca su función de dropit, solo está sincronizando una tienda. ¿No deberías sincronizar la tienda desde la que salió el artículo y la tienda en la que se lanzó? Me parece que los registros de borrado fantasma seguirían rondando en la tienda original, esto provocaría la existencia de dos registros cuando arrastren esa grabación nuevamente, ya que la tienda nunca se sincronizó para eliminar ese registro.

Cuestiones relacionadas