2016-02-29 5 views
0

Я работаю над indexeddb (локальная база данных на стороне клиента). Я написал jqgrid для отображения данных. Я не могу сделать разбиение на страницы.jqgrid: Как сделать разбиение на страницы с помощью indexeddb (база данных на стороне клиента)

Мое требование: в jqgrid, dataType является локальным, потому что он не извлекает данные с сервера. И я не хочу кэшировать все записи с помощью jqgrid. скажите в индексе db 100 записей и при первой загрузке я хочу загрузить только 10 записей. когда пользователь нажимает следующую кнопку, я должен получить следующие 10 записей из indexedDB (это база данных на стороне клиента) и отображение.

Я могу получить данные из indexeddb, только проблема с jqgrid.

Не могли бы вы помочь мне.

Благодарности & С уважением, Brijesh Baser

+0

Эй, проверьте jsstore - http://jsstore.net/. Он предоставляет опцию пропуска и ограничения для разбивки на страницы. –

ответ

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); 
    // ... 
} 
+0

Спасибо Josh за то, что поделились этой информацией. Это полезно для индексированной БД. Но мой пролет - это разбиение на страницы в jqgrid. Если я объявляю локальный тип данных и передаю весь объект jqgrid, он выполняет разбиение на страницы. Но я хочу предоставить только 10 записей и предоставить информацию об итогах отсутствия записи (например, 1000), когда пользователь нажимает следующую кнопку, я должен получить обратный вызов. Но когда я предоставляю 10 записей в jqgrid, внутренне всего нет записей наборы 10. Не могли бы вы мне помочь в сроке jqgrid. –

Смежные вопросы