Creo dojox.grid.datagrid y relleno el contenido de una matriz como en el ejemplo last example on page. Durante el tiempo, cambio el valor de esa matriz en el código. ¿Cómo refrescar el contenido de esa grilla? ¿Cómo cargar nuevos datos desde la matriz modificada?Cómo actualizar la cuadrícula de datos
Respuesta
Para cambiar valores en la cuadrícula, tendrá que cambiar el valor en la tienda de la grilla. Los datos de la cuadrícula están vinculados a los datos de la tienda, y la cuadrícula se actualizará según sea necesario.
Así que la clave es comprender la API de datos de Dojo y cómo funcionan las tiendas en Dojo. En lugar de manipular los datos directamente en la cuadrícula, manipúlelos en la tienda.
Idealmente, la tienda es su matriz que manipula a medida que se ejecuta la aplicación y no debería necesitar sincronizar la matriz con la cuadrícula. Simplemente use ItemFileWriteStore como su titular de datos a menos que eso no sea posible.
Además, el uso de la API de identidad de datos dojo hace que sea muy sencillo encontrar elementos en la cuadrícula si eso es posible. Suponiendo que sabe cuándo se actualiza, elimina o cambia un elemento en su aplicación, debe poder modificar el almacén de cuadrícula según sea necesario cuando ocurra la acción. Este es definitivamente el enfoque preferido. Si no puede hacer eso, tendrá que hacer una búsqueda general y utilizar la devolución de llamada en conjunto para sincronizar manualmente sus matrices, que serán muy lentas y no se escalarán bien, en cuyo caso también puede crear una nueva tienda. juntos y asignarlo a la red con grid.setStore (myNewStore)
Aquí es un violín con un básico de crear, actualizar y borrar la operación: http://jsfiddle.net/BC7yT/11/
todos estos ejemplos se aprovechan de declarar una identidad al crear el almacenar.
var store = new dojo.data.ItemFileWriteStore({
data: {
identifier : 'planet',
items: itemList
}
});
actualizar un EXISTENTE ARTÍCULO:
//If the store is not in your scope you can get it from the grid
var store = grid.store;
//fetchItemByIdentity would be faster here, but this uses query just to show
//it is also possible
store.fetch({query : {planet : 'Zoron'},
onItem : function (item) {
var humans = store.getValue(item, 'humanPop');
humans += 200;
store.setValue(item, 'humanPop', humans);
}
});
insertar un nuevo elemento:
store.newItem({planet: 'Endron', humanPop : 40000, alienPop : 9000});
} catch (e) {
//An item with the same identity already exists
}
eliminar un elemento:
store.fetchItemByIdentity({ 'identity' : 'Gaxula', onItem : function (item) {
if(item == null) {
//Item does not exist
} else {
store.deleteItem(item);
}
}});
El siguiente fragmento de código se puede utilizar para actualizar la cuadrícula:
var newStore = new dojo.data.ItemFileReadStore({data: {... some new data ...});
var grid = dijit.byId("gridId");
grid.setStore(newStore);
EDIT:
Dogo data grid reference guide (añadir/eliminar filas ejemplo, la actualización de ejemplos de datos de cuadrícula)
con esto puedo actualizar una fila específi . este ejemplo es para una red de árbol
var idx = this.treeGrid.getItemIndex(item);
if(typeof idx == "string"){
this.treeGrid.updateRow(idx.split('/')[0]);
}else if(idx > -1){
this.treeGrid.updateRow(idx);
}
(supongo que ya tiene una red de trabajo y que desea cambiar por completo la tienda de la red)
Crear un nuevo almacén de datos con su nuevo valor:
dataStore = new ObjectStore({ objectStore:new Memory({ data: data.items }) });
(los datos son la respuesta de una solicitud de Ajax para mí)
Cambiar el tamaño de su grilla Tore con el nuevo:
grid.store = dataStore;
Render:
grid.render();
Esto actualizará cuadrícula tienda y actualizar la vista de la cuadrícula en la última versión del Dojo 1,9
grid.store = store;
grid._refresh();
Tenía un EnhancedGrid filtrado en el lado del servidor, que se actualizaba felizmente al cambiar la tienda y se mostraba en las otras respuestas.
Sin embargo, tuve otra EnhancedGrid que no se actualizaría cuando se aplicara un filtro. Puede haber tenido que ver con el hecho de que fue filtrado por el lado del cliente (pero los datos aún provienen del servidor que usa la tienda JsonRest), pero realmente no sé la causa. Eitherway, la solución era refrescarse con el siguiente código:
grid.setFilter(grid.getFilter());
Es hacky y extraño, pero si falla todo lo demás ...
- 1. cómo actualizar la cuadrícula de datos en Windows Mobile?
- 2. Cómo actualizar la cuadrícula de datos en WPF
- 3. Python/Tkinter Cómo actualizar la información en la cuadrícula
- 4. Actualizar cuadrícula Dyanmically en Android
- 5. Obtener filas de la cuadrícula de datos
- 6. Cómo cambiar la fuente de datos en una cuadrícula de datos YUI después de la creación
- 7. Eliminar líneas de la cuadrícula de datos
- 8. Cómo actualizar los datos en un jqGrid?
- 9. ¿Cómo borrar una cuadrícula de datos ASP.NET?
- 10. Actualizar la base de datos Android
- 11. Ingresar datos en una cuadrícula
- 12. prevención de cambio de fila en la cuadrícula de datos
- 13. Hipervínculo en la vista de cuadrícula de datos
- 14. WPF MVVM recuperar filas seleccionadas de la cuadrícula de datos
- 15. cómo borrar la vista de cuadrícula?
- 16. La cuadrícula ExtJS4 no actualizará la base de datos remota
- 17. Cómo actualizar objeto sin datos contextos de
- 18. Cómo actualizar la base de datos multimedia de Android
- 19. Alineación de texto de cuadrícula de datos
- 20. Ordenar en varias columnas en la cuadrícula de datos WPF
- 21. Cuadrícula de datos Establecer foco en la fila recién agregada
- 22. Unión de cuadrícula de datos en WPF
- 23. ¿Cómo "actualizar" la base de datos en el mundo real?
- 24. Binding cuadrícula de datos de cabecera de la columna DataContext
- 25. SmartGwt - Cargar datos de cuadrícula de JSON
- 26. Control de cuadrícula de datos Java
- 27. Crear contextmenus para las filas de la cuadrícula de datos
- 28. Cuadrícula de datos android totalmente funcional
- 29. Llenar cuadrícula de datos con filas vacías
- 30. Cómo obtener elementos ordenados desde una cuadrícula de datos