将数据视图与数据库同步
Sync dataview with database
我正在使用带有 Dataview 的 Slickgrid 编辑最多 5000 行的表格,使用 Laravel 从 MySQL 数据库获取数据。我创建了一个 AJAX 保存函数,将所有数据保存到数据库中,但是这个函数运行速度非常慢,并且会冻结网格几秒钟:
function TestSave() {
var request;
var token = $('meta[name="csrf-token"]').attr('content');
request = $.ajax({
url: "/est/public/estimate/{{ $id }}",
type: "PATCH",
dataType: "json",
params: {_token:token},
async: true,
data: { data: JSON.stringify(dataView.getItems()), _token:token
}
});
}
有没有办法在不冻结的情况下保存数据?我想过使用 grid.onClick 或 onBeforeEditCell 并在它发生变化时单独保存每一行,但是像插入行这样的功能会更改插入下方每一行的 "order" 值。
保持 Dataview 和数据库同步的最佳方法是什么?
这是一个复杂的问题。
首先,ajax 调用应该是异步的,因此它不应阻塞 5 秒。
但是,如果您将所有 5000 行都传递给服务器,那么 JSON 编码可能需要一段时间。您最好只将更改的行传递给服务器。
然而,它本身比乍看起来要复杂得多。
您最好使用现有框架来为您处理数据。
Breeze是个不错的选择。
我正在使用带有 Dataview 的 Slickgrid 编辑最多 5000 行的表格,使用 Laravel 从 MySQL 数据库获取数据。我创建了一个 AJAX 保存函数,将所有数据保存到数据库中,但是这个函数运行速度非常慢,并且会冻结网格几秒钟:
function TestSave() {
var request;
var token = $('meta[name="csrf-token"]').attr('content');
request = $.ajax({
url: "/est/public/estimate/{{ $id }}",
type: "PATCH",
dataType: "json",
params: {_token:token},
async: true,
data: { data: JSON.stringify(dataView.getItems()), _token:token
}
});
}
有没有办法在不冻结的情况下保存数据?我想过使用 grid.onClick 或 onBeforeEditCell 并在它发生变化时单独保存每一行,但是像插入行这样的功能会更改插入下方每一行的 "order" 值。
保持 Dataview 和数据库同步的最佳方法是什么?
这是一个复杂的问题。
首先,ajax 调用应该是异步的,因此它不应阻塞 5 秒。
但是,如果您将所有 5000 行都传递给服务器,那么 JSON 编码可能需要一段时间。您最好只将更改的行传递给服务器。
然而,它本身比乍看起来要复杂得多。
您最好使用现有框架来为您处理数据。 Breeze是个不错的选择。