Добавить пользовательскую кнопку в коллекцию кнопок - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу добавить пользовательскую кнопку в .buttons-collection . См. Снимок экрана и пример ниже.

buttons: [{extend : 'collection',
                         text : '<i class="fa fa-bars"></i>',
                         buttons : [ 'copy', 'csv', 'excel', 'pdf', 'print']}]

enter image description here

Кнопка должна называться «Сообщить о проблеме». При нажатии на кнопку он должен запустить JS ниже (с именем таблицы). Этот код отправляет электронное письмо с описанием проблемы (проблема, связанная с таблицей) -

   onclick=JS("function() {
$(location).attr('href', 'mailto:xxx.com?subject='
              + encodeURIComponent('Issue on Table' + this.table.name)
              + '&body=' 
              + encodeURIComponent('Please check issue on table ' + '\"' + this.table.name + '\"'));
    }

1 Ответ

1 голос
/ 20 апреля 2020

Если у вас есть <table> с идентификатором myTable и именем Your Name Here (просто в качестве заполнителя), вы можете использовать следующее:

$(document).ready(function() {

  $('#myTable').DataTable( {
    dom: 'Bfrtip',
    buttons: [
      { extend : 'collection',
        text : '<i class="fa fa-bars">buttons</i>',
        buttons: [
          'copy', 'csv', 'excel', 'pdf', 'print',
          {
            text: 'Report Issue',
            action: function ( e, dt, node, config ) {
              reportIssue(e, dt, node, config);
            }
          }
        ]
      }]
  } );

  // e - the button click event
  // dt - the datatable object
  // node - button node
  // config - the button's config (e.g. 'text')
  function reportIssue(e, dt, node, config) {    
    var tableName = $('#myTable').attr('name');
    alert( 'The "' + config.text + '" button was clicked\n' 
        + 'for the "' + tableName + '" table.' );
  }

});

Сердце Решением является эта часть, где пользовательская кнопка объявляется:

{
  text: 'Report Issue',
  action: function ( e, dt, node, config ) {
    reportIssue(e, dt, node, config);
  }
}

Примечания:

Я добавил слово «кнопки» к главной кнопке, просто чтобы она не была пустой:

enter image description here

Когда вы нажимаете на это, вы видите следующий набор кнопок:

enter image description here

После этого вам решать, что вы добавите в функцию reportIssue(). Вам может не понадобиться ни одна из переменных, переданных ему. Вероятно, нет, основываясь на примере JS в вопросе (я использовал предупреждение, только для тестирования).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...