¿Se guarda automáticamente mediante XmlHttpRequest desde EditorGridPanel en ExtJS 3.0?

StackOverflow https://stackoverflow.com/questions/1202918

  •  05-07-2019
  •  | 
  •  

Pregunta

Tengo un EditorGridPanel en Ext JS 3.0, rellenado a través de HttpProxy y JsonReader, y tengo una columna editable que trabaja " Puedo editar el valor y lo marca como sucio.

Ahora, ¿cómo puedo hacerlo, después de que se haya editado una celda, enviar un XmlHttpRequest al servidor con unos pocos parámetros básicos, el campo de ID de la fila, el nombre de la columna cambiado y el nuevo valor?

Una vez que se ha realizado la solicitud, la actualización del lado del servidor es fácil. Pero ninguna cantidad de Google y la búsqueda de triviales ejemplos de EditGridPanel en memoria ayudan a que EditGridPanel realice la llamada.

Lo que no estoy buscando:

  1. DESCANSO: simplemente actualice mediante GET o POST normal
  2. Insertar nuevos registros o eliminar filas: solo se actualiza por ahora.
  3. Actualizaciones por lotes: solo se edita una celda a la vez.
  4. Un montón de código: esto debería ser trivial, como el Ajax.InPlaceEditor en Scriptaculous
¿Fue útil?

Solución

Finalmente lo descubrí ... solo necesitaba un escritor en mi tienda:

var ds = new Ext.data.JsonStore({
    autoSave:       true,
    url:            "ajax-handler.aspx",
    method:         "POST",
    timeout:        120000,
    root:           "rows",
    totalProperty:  "results",
    idProperty:     "primarykeyvalue",
    fields:         previewColumnConfig,
    baseParams:     {
        now:        (new Date()).getTime()
        },
    writer: new Ext.data.JsonWriter({
        encode:     true,
        listful:    false
        })
    });

Notas:

  • El " ahora " baseparam es para desplazarse " algunos navegadores " (haga una conjetura) el almacenamiento en caché de los resultados de AJAX
  • " codificar " devuelve las variables POST en lugar de un simple resultado JSON en POST.
  • " listado " está deshabilitado porque el usuario solo está editando una fila / columna a la vez, no es necesario diseñar el analizador del lado del servidor para incluir una matriz, solo puede esperar una fila.
  • Sí, tengo un valor de tiempo de espera muy largo .
  • previewColumnConfig se define de antemano, almacena mis definiciones de columna.

Otros consejos

Podría usar el evento afteredit para Ext.grid.EditorGridPanel que se activará después de que el editor esté borroso. También puede establecer un método de comprobación periódica (Intervalo) cuando se dispara el evento de edición previa y borrarlo cuando se activa el evento de edición posterior.

Ejemplo para afteredit:

EditorGridPanel.getColumnModel().getCellEditor(column).on('afteredit', function() {
    //do ajax call for the update.
});

Avíseme si necesita un ejemplo para el verificador periódico y le escribiré uno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top