jqgrid:如何使用indexeddb(客户端数据库)

时间:2016-02-29 12:56:29

标签: jqgrid indexeddb

我正在处理indexeddb(本地客户端数据库)。我编写了jqgrid来渲染数据。 我无法做分页。

我的要求是: 在jqgrid中,dataType是本地的,因为它不从服务器获取数据。 我不想用jqgrid缓存所有记录。 让我们说在索引db 100记录和第一次加载时,我只想加载10条记录。当用户按下一个按钮时,我应该从indexedDB(这是客户端数据库)中获取接下来的10条记录并显示。

我可以从indexeddb获取数据,只有jqgrid的问题。

你能帮我吗?

谢谢&问候, Brijesh Baser

1 个答案:

答案 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);
  // ...
}
相关问题