我正在处理indexeddb(本地客户端数据库)。我编写了jqgrid来渲染数据。 我无法做分页。
我的要求是: 在jqgrid中,dataType是本地的,因为它不从服务器获取数据。 我不想用jqgrid缓存所有记录。 让我们说在索引db 100记录和第一次加载时,我只想加载10条记录。当用户按下一个按钮时,我应该从indexedDB(这是客户端数据库)中获取接下来的10条记录并显示。
我可以从indexeddb获取数据,只有jqgrid的问题。
你能帮我吗?谢谢&问候, Brijesh Baser
答案 0 :(得分:2)
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);
// ...
}