HI, Я смотрю на SlickGrid, и я могу видеть пример о том, как редактировать ячейку, однако я сохраняю эти изменения. Мне еще предстоит найти пример, который подскажет мне, как это сделать.Сохранение изменений в SlickGrid
ответ
Уловка для сохранения SlickGrid заключается в том, чтобы понять, что сетка обновит массив данных, который вы предоставили при создании сетки при редактировании ячеек.
Путь, который я затем сохраняю, это включить форму с кнопкой отправки и скрытое поле под сеткой. Я задерживаю событие отправки и использую JSON plugin для сериализации массива и размещения его в скрытом поле. На стороне сервера вы получите строку JSON, которую вы можете десериализировать, пропустить и записать в базу данных.
Если предположить, что массив данных называется «данные», как образцы, должна работать для вас:
<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>
Хотя я лично с помощью JSON сериализации и представить в подходе скрытого поля from my previous answer других подход может заключаться в том, чтобы уловить событие onCellChange, запущенное SlickGrid после изменения значения ячейки и сделать вызов Ajax серверу для сохранения измененного значения. Это приведет к большому количеству небольших запросов Ajax на сервер (что может увеличить нагрузку), но обновляет сервер сразу после внесения изменений.
Я реализую пример таким образом, но я бы предпочел ваш первый пример, когда пакетные обновления обрабатываются, но я могу видеть преимущества обоих, безусловно, замечательно видеть, что по крайней мере кто-то еще использует его;) – Rubans
Я предпочитаю сам пакетный метод , но я думал, что добавлю другую идею для полноты :) –
Гораздо лучше и надежнее, чем пакетный метод imo. – EarlyPoster
Для полноты, минимальный пример, демонстрирующий использование onCellChange, о котором говорится в сообщении Jim OHalloran.
Для получения дополнительной информации и просмотра всех событий, которые могут быть использованы аналогично onCellChange, см. Комментарии в начале 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>
API-интерфейс для этого метода несколько изменился: 'grid.onCellChange.subscribe (функция (е, арг) { console.log (аргументы); });' Args является объектом с, рядом клеток, объект сетки и отредактированный элемент. – Solsys
@Iclark Можете ли вы объяснить, как настроить таргетинг на конкретную ячейку для обновления db? Поскольку ваши данные в основном представляют собой пару ключевых значений, где ключ должен соответствовать значению ключа поля столбца, я не вижу, как я могу предоставить уникальный идентификатор моего элемента ячейки, чтобы я мог сопоставить этот элемент с объектом базы данных? Как я могу передать уникальный идентификатор моего элемента ячейки, где, когда я делаю обновление БД, я обновляю только элемент из измененной ячейки, а не всей сетки? – Marko
хорошо один. Я использовал реализацию хэш-таблицы javascript для сбора измененных строк (http://www.mojavelinux.com/articles/javascript_hashes.html) – Amit
- 1. Сохранение данных из slickgrid
- 2. сохранение изменений в db
- 3. Сохранение изменений DataSet
- 4. Сохранение изменений перетаскивания
- 5. Сохранение изменений POCO
- 6. Сохранение истории изменений виджетов?
- 7. Сохранение локальных изменений в git
- 8. Сохранение изменений в проекте докера
- 9. Сохранение изменений, сделанных в JFrame
- 10. сохранение изменений в редакции сообщения
- 11. Limesurvey - Сохранение изменений в шаблоне
- 12. Сохранение изменений в вытащенном подмодуле
- 13. Сохранение изменений фиксации в оболочке
- 14. сохранение формы курсора без изменений
- 15. Сохранение изменений для удаленного файла
- 16. Ajax dynamic «Сохранение изменений» div
- 17. SlickGrid: Как реализовать редакторLock для одновременных изменений данных?
- 18. Сохранение изменений в удаленной ветке в Git
- 19. сохранение изменений в строке в django
- 20. Сохранение изменений в рабочем каталоге в Git
- 21. Сохранение локальных изменений на javascript
- 22. Создание набора изменений для SlickGrid для сохранения данных
- 23. Сохранение изменений в contenteditable с отметкой времени
- 24. Сохранение изменений объекта в данных ядра
- 25. Сохранение изменений в файле без перегрузки Страница
- 26. Загрузка/Изменение/сохранение изменений в текстовый файл
- 27. Сохранение изменений, внесенных в свойство backcolor
- 28. Сохранение изменений в LLVM BaseBlock Pass
- 29. Сохранение изменений из combobox в базе данных
- 30. Блестящий интерфейс: сохранение изменений в входах
HI Джим, это идея, с которой я пошла. Мысль там, возможно, некоторые другие реализации, но не думаю. Это прекрасно, спасибо. – Rubans
Это просто приносит мне пустую сетку после нажатия кнопки сохранения. Что я делаю не так? – randomizertech
Просто хочу добавить, что с использованием браузера по умолчанию ['JSON.stringify'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) должно быть просто отлично Эти дни. Не нужно идти по плану плагина jQuery, если вам не нужно поддерживать некоторые действительно старые браузеры. – user128216