2016-06-02 1 views
3

Я использую материализацию в качестве своего интерфейса пользовательского интерфейса, и я использую DataTables для своих таблиц. У меня есть таблица, которую мне нужно экспортировать в excel, и я могу сделать это просто отлично, используя кнопки DataTables. Однако они являются стандартными кнопками DataTables, и я бы хотел использовать кнопки Materialize.DataTables - Как я могу использовать собственные кнопки для экспорта?

Вопрос в следующем: Как я могу использовать свои собственные кнопки и заставить их выполнять функции встроенных кнопок DataTables (в частности, экспортировать в Excel)?

Я уже пробовал использовать параметр «className» для класса Button Materialize, но это не сработало. Я полагаю, что мне, вероятно, придется выполнить некоторую функцию JQuery.

Спасибо всем!

EDIT: Вот мой код:

$(document).ready(function() { 
var dataTable = $('#datatable').DataTable({ 
    language: { 
     search: "", 
     searchPlaceholder: "Search" 
    }, 
    dom: 'Brftip', 
    buttons: [ 
     'copy', 
     'csv', 
     'excel', 
     'pdf', 
     'print' 
    ] 
}); 
+0

Показать ваш код пожалуйста! – CMedina

+0

@CMedina спасибо. Это довольно стандартный код DataTables. Проверьте EDIT на моем основном посту. –

ответ

6

Использование buttons.dom.button для определения класса и элемент, который будет использоваться для кнопки.

Например:

var table = $('#example').DataTable({ 
    "ajax": 'https://api.myjson.com/bins/qgcu', 
    "order": [], 
    "dom": 'Bfrtip',   
    "buttons": { 
     "dom": { 
      "button": { 
      "tag": "button", 
      "className": "waves-effect waves-light btn mrm" 
      } 
     }, 
     "buttons": [ 'copyHtml5', 'excelHtml5', 'csvHtml5', 'pdfHtml5' ] 
    } 
}); 

this jsFiddle См для кода и демонстрации.

+0

Да, вы получили его! Спасибо огромное!Я не хочу толкать свою удачу или что-то еще, но вы также не знаете, как изменить разбивку на страницы на разбиение на страницы материализации, не так ли? Если вы этого не сделаете, не волнуйтесь, я попытаюсь разобраться в этом самостоятельно. Но опять же, спасибо вам большое! –

+0

@ T.Ferreira, это просто взломать, но посмотрите этот пример https://jsfiddle.net/ey891een/2/ –

+0

Приятно! Я собираюсь посмотреть, смогу ли я улучшить его завтра. Но большое вам спасибо, вы удивительная помощь! –

0

https://datatables.net/extensions/buttons/custom

buttons: [ 
    { 
     text: 'Reload', 
     action: function (e, dt, node, config) { 
       dt.ajax.reload(); 
      } 
     } 
    ] 

"текст" может быть HTML для пользовательской кнопки

+0

Вы предоставили код для пользовательской кнопки. Тем не менее, OP хотел вместо этого использовать существующие кнопки по-разному. –

+0

Вы правы, я должен был быть более конкретным: Мне нужна кнопка html и действие click. Итак, я предложил создать новую кнопку с нужным аспектом вместо изменения исходных. Это можно перевести: кнопок: [ { удлиняет: «csvHtml5», текст: «

» } ] –

+0

Я не думаю, что будет работать либо, так как кнопка будет по-прежнему иметь стиль по умолчанию с 'div' внутри. –

0

Вы должны использовать Jquery, чтобы выбрать кнопку и добавить класс в drawcallback. Что-то вроде этого:

$('.buttons-excel').addClass('waves-effect waves-light btn'); 

Или:

var table = $('#example').DataTable({ 
    "ajax": 'https://api.myjson.com/bins/qgcu', 
    "order": [], 
    "dom": 'Bfrtip',   
    "buttons": { 
    "dom": { 
     "button": { 
     "tag": "button", 
     "className": "waves-effect waves-light btn mrm" 
     } 
    }, 
    "buttons": [ 'copyHtml5', 'excelHtml5', 'csvHtml5', 'pdfHtml5' ] 
    } 
}); 
+0

Спасибо! Это не работает, друг. Для этого вам не нужен JQuery, у DataTables есть опция «className» для кнопок, и я уже пробовал это, как я сказал в своем сообщении. Тем не менее, кнопка не похожа на Materialize. Вот скриншот (первая строка - это то, как я хочу, чтобы они выглядели, во-вторых, как они выглядят): http://i.imgur.com/VN08uro.png –

+0

Ах, извините, я неправильно понял. Я не эксперт, я могу это признать. Я хотел использовать кнопки бутстрапа на моей таблице данных и мог только заставить его работать, делая addClass в моем «drawCallback» –