2014-09-19 4 views
7

Сервер возвращает 15 записей на страницу, а общее количество записей превышает 2000. Я хотел бы отображать первые 15 записей, а затем на каждом нажатии кнопки «Далее» отображать оставшиеся все записи , (15 на страницу). Для этого мы делаем разбиение на страницы на стороне сервера или на стороне клиента ???Ссылка на серверную страницу с использованием данных

Вот мой стол и атрибуты им помощь для пагинации в DataTables:

var tableData = self.accountCollection.getData(); 

     var tableColumns = this.accountCollection.getColumns(); 
     var totalRecs = this.accountCollection.length; 

     //create the UI grid containing the list of items 

     this.resultsTable = tableEl.dataTable({ 
      "bServerSide": true, 
      "sEcho": 3, 
      "iTotalRecords": totalRecs, 
      "iTotalDisplayRecords": 15, 
      "aaData": tableData, 
      "aoColumns": tableColumns, 
      "aaSorting": [[1,'asc']], 
      }); 



getData: function() { 

     var returnData = []; 
     $.each(this.models, function (idx, accountModel) { 
      returnData.push(accountModel.attributes); 
     }); 
     return returnData; 
    }, 

returnData вернет мне объект, который имеет поле я будет населяющие ıA таблицы: Объекта перенастроена: (примерно)

Object 
accountName: "No Company" 
address1: "1234 asdf" 
    address2: "" 
    billingAcctId: null 
    billingSystem: null 
    city: "mountain view" 
    comments: null 
    country: "USA" 

GetData() функция будет затем призвана RETUEN данных из datatbase с помощью:

var tableData = this.accountCollection.getData() 

поэтому в основном tableData будет иметь необходимые поля и значения для отображения в таблице. Теперь у меня может быть более 1000 записей, возвращенных с сервера. Поэтому мне нужна разбивка на страницы. Один в скрипке - это то, что я пробовал и не оказывает никакого влияния на paginatin .. :(

Я думаю, что у меня есть базовое разбиение на страницы, которое поставляется с данными, но теперь мне нужно иметь серверную сторону, чтобы получать только 15 записей для отображения одновременно, а при нажатии кнопки «Следующий» и «предыдущий» я должен иметь возможность делать ajax-звонки, чтобы получить оставшиеся записи 15 на страницу ...

Надеюсь, это поможет вам лучше понять. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Как я могу достичь разбивки на страницы с использованием данных? Пожалуйста, дайте мне знать при необходимости подробнее ..

Благодаря

ответ

0

Это выглядит ваш переулок ->http://datatables.net/examples/data_sources/js_array.html Это чисто на стороне клиента

Хотя, насколько я знаю, единственный способ достижения фактического пагинацию (что делает его быстрее, потому что вы только выбор 15 записей из базы данных за раз) с помощью ajax-ing с вашей стороны сервера (т. е. http://datatables.net/examples/data_sources/server_side.html)

Это не выглядит так, как будто вы делаете это. Если ... self.accountCollection.getData() - это обратный вызов ajax, но в любом случае, когда вы создаете экземпляр DataTable, вы должны использовать «ajax: tableData», а не «aaData: tableData».

Возможно, вы сбиваете с толку JSON, который возвращает данные, с API-интерфейсом datatables, который вы используете для взаимодействия/инициализации с помощью datatable.

Извините, это было немного LOL, что-нибудь из этого имеет смысл?

+0

хорошо, «self.accountCollection» является извлечение списка пользователей с сервера: что-то вроде ниже .. this.accountCollection = новые ipiadmin.collections.AccountCollection(); все еще имеет смысл сделать звонок на стороне клиента ..? – user1234

+0

вы можете переопределить self.accountCollection, чтобы включить детализирование деталей в JSON, которые он извлекает. В принципе, вы хотите, чтобы ваш JSON выглядел примерно так: {«sEcho»: 15, «iTotalRecords»: 2000, «iTotalDisplayRecords»: 2000, «aaData»: [ваши первые 15 строк данных]}, затем используйте self.accountCollection as источник ajax в вашем исходном файле. Также интересно, какой у вас стек (клиент и сервер)? –

+0

есть ли способ, которым вы могли бы предоставить пример ... Спасибо за помощь! – user1234

3

enter image description here

Pagination работает общая отображаемую запись необходимо выполнить следующие минимальные изменения.

«iTotalDisplayRecord» будет всего отфильтрованные записи