Дошли руки до datatables.net
Наконец дошли руки до освоения плагина databales.net для работы с таблицами. До этого всё использовал jqgrid. Вот типичный шаблон c выгрузкой в excel, загрузкой данных из json, добавления в POST своих данных, получения id выделенной строки.
HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<table id="clientsgrid" class="display" style="width:100%"> <thead> <tr> <th>#</th> <th></th> <th>Телефон</th> <th>ФИО</th> <th>Email</th> <th>Дата</th> </tr> </thead> </table> |
Javascript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
function ClientsGridList(){ table=$('#clientsgrid').DataTable( { dom: 'Bfrtip', destroy: true, select: true, buttons: [ 'excel','print' ], paging: true, keys: true, //scrollY: 200, //scrollCollapse: true, //scroller: true, "processing": true, "serverSide": true, "ajax": { "url": "/server/clients/ClientsGrid", "type": "POST", "data": { "owner":owner_select.value, "segment":users_groups_array_select.value } }, "language": { url: '/js/i18n/datatable.json' }, "columns": [ { "data": "id"}, { "data": "deleted" }, { "data": "phone"}, { "data": "name" }, { "data": "email" }, { "data": "dt"} ] } ); $('#clientsgrid').unbind(); $('#clientsgrid').on('dblclick', 'tbody td', function () { tr = $(this).closest('tr'); //console.log(tr); row = table.row( tr ); data=row.data(); user_id=data.id; DrawCartUser(user_id); }); // table.ajax.reload(); }; |
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$owner= _POST("owner"); // владелец (если суперадмин - выводим всех) $segment= _POST("segment"); // какой сегмент (если -1, выводим всех) $draw= _POST("draw"); // какая страница $start= _POST("start"); // с какой записи по счету $length= _POST("length"); // записей на страницу $order= _POST("order")[0]["column"]; // по какой колонке сортируем $order= _POST("columns")[$order]["data"]; $sidx= _POST("order")[0]["dir"]; // способ сортировки $search_value=_POST("search")["value"]; // что ищем $search_regex=_POST("search")["regex"]; // регулярка $res=$Users->GetClientsGrid($Users,$owner,$segment,$start,$length,$order,$sidx,$search_value); if ($res->error): echo '{"error": "'.$res->errortext.'" }'; die(); else: $res->result->draw=$draw; jsonExit($res->result); endif; |
Ну и получается что то вроде: