jqgrid:如何使用 indexeddb(客户端数据库)进行分页
jqgrid : How to do pagination with indexeddb (client side data base)
我正在处理 indexeddb(本地客户端数据库)。我已经编写了 jqgrid 来呈现数据。
我无法进行分页。
我的要求是:
在 jqgrid 中,dataType 是本地的,因为它不是从服务器获取数据。
而且我不想用 jqgrid 缓存所有记录。
假设在索引数据库中有 100 条记录,在第一次加载时,我只想加载 10 条记录。当用户按下一个按钮时,我应该从 indexedDB(这是客户端数据库)中获取接下来的 10 条记录并显示。
我可以从 indexeddb 中获取数据,只是 jqgrid 有问题。
你能帮帮我吗
感谢和问候,
布里杰什·巴塞尔
indexedDB 不提供等同于 SQL 的限制。停止迭代的唯一方法是维护一个计数器变量并检查它是否已达到。像这样:
var counter = 0;
var limit = 10;
function query() {
db.transaction('').objectStore().openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if(cursor) {
var value = cursor.value;
console.log(value);
counter++;
if(counter < limit) {
// only continue if under limit
cursor.continue();
}
}
}
}
要转到下一页,您要使用 IDBCursor.prototype.advance,并传入要跳过的对象数量,例如 10。类似这样:
function query() {
var advanced = false;
db.transaction('').objectStore().openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if(!cursor) {
return;
}
if(!advanced) {
advanced = true;
cursor.advance(10);
return;
}
var value = cursor.value;
console.log(value);
// ...
}
}
我正在处理 indexeddb(本地客户端数据库)。我已经编写了 jqgrid 来呈现数据。 我无法进行分页。
我的要求是: 在 jqgrid 中,dataType 是本地的,因为它不是从服务器获取数据。 而且我不想用 jqgrid 缓存所有记录。 假设在索引数据库中有 100 条记录,在第一次加载时,我只想加载 10 条记录。当用户按下一个按钮时,我应该从 indexedDB(这是客户端数据库)中获取接下来的 10 条记录并显示。
我可以从 indexeddb 中获取数据,只是 jqgrid 有问题。
你能帮帮我吗
感谢和问候, 布里杰什·巴塞尔
indexedDB 不提供等同于 SQL 的限制。停止迭代的唯一方法是维护一个计数器变量并检查它是否已达到。像这样:
var counter = 0;
var limit = 10;
function query() {
db.transaction('').objectStore().openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if(cursor) {
var value = cursor.value;
console.log(value);
counter++;
if(counter < limit) {
// only continue if under limit
cursor.continue();
}
}
}
}
要转到下一页,您要使用 IDBCursor.prototype.advance,并传入要跳过的对象数量,例如 10。类似这样:
function query() {
var advanced = false;
db.transaction('').objectStore().openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if(!cursor) {
return;
}
if(!advanced) {
advanced = true;
cursor.advance(10);
return;
}
var value = cursor.value;
console.log(value);
// ...
}
}