HI, Estoy viendo SlickGrid y puedo ver un ejemplo sobre cómo editar la celda, sin embargo, guardo estos cambios. Todavía tengo que encontrar un ejemplo que me diga cómo hacer esto.Guardando cambios en SlickGrid
Respuesta
El truco para guardar SlickGrid es darse cuenta de que la cuadrícula actualizará la matriz de datos que proporcionó al crear la cuadrícula a medida que se editan las celdas.
La forma en que guardo eso es incluir un formulario con un botón de envío y un campo oculto debajo de la cuadrícula. Atrapo el evento enviar y uso el JSON plugin para serializar el conjunto y colocarlo en el campo oculto. En el lado del servidor, recibirá una cadena JSON que puede deserializar, recorrer y escribir en la base de datos.
Asumiendo que su conjunto de datos se denomina "datos" como las muestras, lo que sigue debe trabajar para usted:
<form action="?" method="POST">
<input type="submit" value="Save">
<input type="hidden" name="data" value="">
</form>
<script>
$(function() {
$("form").submit(
function() {
$("input[name='data']").val($.JSON.encode(data));
}
);
});
</script>
Mientras estoy personalmente utilizando la serialización JSON y presentar en un enfoque de campo oculto from my previous answer otra El enfoque podría ser atrapar el evento onCellChange disparado por SlickGrid después de que un valor de celda haya cambiado y hacer una llamada Ajax al servidor para guardar el valor cambiado. Esto dará como resultado muchas pequeñas solicitudes de Ajax al servidor (lo que puede aumentar la carga) pero actualiza el servidor tan pronto como se realicen cambios.
He implementado un ejemplo de esa manera, pero preferiría su primer ejemplo donde se procesan las actualizaciones por lotes, pero puedo ver los beneficios de ambos, definitivamente genial ver que hay al menos alguien más fuera de él;) – Rubans
Prefiero el método por lotes yo mismo , pero pensé que agregaría la otra idea para completar :) –
Mucho mejor y más confiable que el método de lote imo. – EarlyPoster
Para completar, un ejemplo mínimo que demuestra el uso de onCellChange, al que se hace referencia en la publicación de Jim OHalloran.
Para obtener más información y ver todos los eventos que se pueden utilizar de forma similar a onCellChange, consulte los comentarios al principio de SlickGrid source.
<head>
<!-- boilerplate omitted ... -->
<script type="text/javascript">
var grid;
var options = {
enableCellNavigation: true,
enableColumnReorder: false,
autoEdit: false,
editable: true,
};
var columns = [
{id: "item_key", name: "Key", field: "item_key" },
{id: "value", name: "value", field: "value", editor: LongTextCellEditor }
];
var data = [
{item_key: "item1", value: "val1"},
{item_key: "item2", value: "val2"},
];
$(document).ready(function() {
grid = new Slick.Grid($("#myGrid"), data, columns, options);
//Earlier code for earlier version of slickgrid
// grid.onCellChange = function (currentRow, currentCell, item) {
// alert(currentRow+":"+currentCell+"> key="+item['item_key']+", value="+item['value']);
//Updated code as per comment.
grid.onCellChange.subscribe(function (e,args) {
console.log(args);
});
};
});
</script>
</head>
<body>
<div id="myGrid" style="height:10em;"> </div>
</body>
El API para este método ha cambiado ligeramente: 'grid.onCellChange.subscribe (función (E, args) { console.log (argumentos); });' Args es un objeto con la celda, fila el objeto de cuadrícula y el elemento editado. – Solsys
@Iclark ¿Puede explicar cómo apuntaré a una celda específica para una actualización de db? Dado que sus datos son básicamente un par de valores clave donde la clave debe coincidir con el valor de la clave del campo de columna, no veo cómo puedo proporcionar una identificación única de mi elemento de celda para poder hacer coincidir ese elemento con la entidad de base de datos. ¿Cómo puedo pasar la identificación única de mi elemento de celda a donde, cuando realizo la actualización de la base de datos, actualizo solo el elemento de la celda que ha cambiado y no toda la cuadrícula? – Marko
bueno. Usé una implementación de javascript hashtable para recopilar las filas modificadas (http://www.mojavelinux.com/articles/javascript_hashes.html) – Amit
- 1. Guardando Interface Builder Cambios al construir en Xcode
- 2. Guardando enum en mongoDB
- 3. Guardando CGContextRef
- 4. SlickGrid Vs JQGrid
- 5. Grupos de columnas SlickGrid
- 6. ¿Buen tutorial para SlickGrid?
- 7. Guardando formularios anidados en Django
- 8. Datos de SlickGrid AJAX
- 9. Cómo usar jQuery SlickGrid con PHP/MySQL (cargar datos del servidor y guardar cambios)
- 10. guardando la imagen QML
- 11. C# Guardando imágenes enormes
- 12. Guardando macros vim
- 13. Obtener datos de las celdas en SlickGrid
- 14. Hacer solo ciertas columnas editables en SlickGrid
- 15. filas editables y no editables en slickgrid
- 16. multiple slickGrid en las pestañas jQuery
- 17. Hacer una columna en SlickGrid un hipervínculo
- 18. información sobre herramientas celular en SlickGrid
- 19. obtener datos de filas seleccionadas en slickgrid
- 20. ¿Es posible una fila variable en SlickGrid?
- 21. ¿Cómo poner HTML en una celda Slickgrid?
- 22. cómo agregar una columna oculta en slickgrid
- 23. SlickGrid y selección de texto
- 24. eclipse: explícitamente guardando proyecto/área de trabajo
- 25. SlickGrid RemoteModel vs. Dataview Modelo
- 26. Combinando ejemplos de filtros SlickGrid
- 27. Editor de selección de SlickGrid
- 28. Guardando imagen en el núcleo Data
- 29. Guardando matriz 2D numérica en la imagen
- 30. Guardando System.Drawing.Graphics en un png o bmp
HI Jim, esa es la idea con la que me he ido. Pensé que quizás había otras implementaciones, pero supongo que no. Eso está bien, gracias. – Rubans
Esto me acaba de traer una cuadrícula en blanco después de hacer clic en el botón Guardar. ¿Qué estoy haciendo mal? – randomizertech
Solo quiero agregar que usar el navegador predeterminado ['JSON.stringify'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) debería estar bien estos días. No es necesario ir a la ruta del complemento jQuery a menos que necesite admitir algunos navegadores realmente antiguos. – user128216