Почему мой jsGrid отказывается обновлять отредактированную строку?
Я знаю, что есть альтернативы, но я действительно хочу использовать jsGrid в моем проекте. Я использую версию 1.5.2, как указано на их сайте, и вытаскиваю ее из CDN. Все, что я хочу, это чтобы обновление вызывалось, как описано, чтобы я мог сделать $.ajax
, но кажется, что обратный вызов ничего не делает. Вот моя реализация:
$(function() {
$("#jsGrid").jsGrid({
width: "100%",
height: "600px",
inserting: false,
editing: true,
sorting: true,
paging: false,
autoload: true,
controller: {
loadData: function(filter) {
return $.ajax({
type: "GET",
url: "@Url.Action("getOptions", New With {.communityID = 1})",
data: filter
});
},
updateItem: function (item) {
console.log('hello??');
return $.ajax({
type: "PUT",
url: "/items",
data: item
});
}
},
...
});
})
В документации сказано, что методы контроллера должны возвращать обещания. Все в порядке, так как я использую jQuery 3.0, и
$.ajax
возвращает теперь стандартизированный Javascript Promise/A (именно этого ожидает jsGrid).Я знаю, что объект контроллера понимается правильно, потому что он вызывает
loadData()
и заполняется красивыми строками из моего сервиса REST.Посмотрев на множество других примеров, кажется, что все заставляют его работать с очень простым кодом, представленным в документации. мой
console.log
никогда не попадает в точку останова, и вызов AJAX никогда не происходит на вкладке сети.Я перешел на неуменьшенную версию jsgrid.js и никогда не получаю никаких ошибок консоли.
Когда я размываю строку (отодвигаюсь от строки, которую я редактирую), значение возвращается к тому, что было изначально.
Может я просто не понимаю как это работает? Чтобы сохранить изменения в моей БД, я должен искать другое событие? Любая помощь будет очень высоко ценится!
1 ответ
Ответьте здесь в случае, если кто-то ищет это.
Я ожидал updateItem
событие, которое будет запущено, когда поле было отредактировано, а затем размыто. Это не так - вы ДОЛЖНЫ включить поле "control", которое по умолчанию даст вам кнопку сохранения. Это было хорошо для моих целей.
$("#jsGrid").jsGrid({
.
.
fields: [
.
.
{ type: "control" }
]
});