【问题标题】:DataTables - display a button in a cell of every rowDataTables - 在每一行的单元格中显示一个按钮
【发布时间】:2016-02-12 12:21:23
【问题描述】:

我正在使用jQuery DataTables 插件,在初始化过程中我使用"drawCallback" 来更改行的外观。

我的代码如下:

        "drawCallback": function() {
            table.rows().every( function() {
                var d = this.data();
                var option = this.find('.options');

                if (d.activated) {
                    option.html('<button class="btn btn-mini btn-primary pull-right"> Enabled</button>');
                } else {
                    option.html('<button class="btn btn-mini btn-danger pull-right"> Disabled</button>');
                }
            });

         }

但是this.find('.options') 部分没有做任何事情。

基本上我想:

  1. 获取当前行
  2. 选择我给'options'的类名的列
  3. 在此处插入与行数据相关的按钮

HTML:

<table id="example">
<thead>
<tr>
   <th></th>
   <th>Last Name</th>
   <th>First Name</th>
   <th>Email</th>
   <th></th>
</tr>
</thead>
</table>

数据表初始化:

var table = $('#example').DataTable( {
   columns: [
        {
            "className":      'center',
            "data":           null,
            "defaultContent": ''
        },
        {
            data: 'last_name'
        },
        {
            data: 'first_name'
        },
        {
            data: 'email'
        },
        {
            "className":      'options',
            "data":           null,
            "defaultContent": ''
        }
    ],

    // ...and so on

最初我有以下有效的代码:

$('td.options').html('<button class="btn btn-mini btn-primary pull-right"> Enabled</button>');

但这是不分青红皂白的行数据,只是为每一行粘贴相同的按钮。

【问题讨论】:

  • 你能在其中添加一些带有指定类的html吗? IE。 HTML 输出
  • @SamSwift 我添加了更多上下文

标签: php jquery datatables laravel-5.1


【解决方案1】:

使用columns.render 选项定义为单元格生成内容的函数。

var table = $('#example').DataTable( {
   columns: [
        {
            "className":      'center',
            "data":           null,
            "defaultContent": ''
        },
        {   "data": 'last_name' },
        {   "data": 'first_name' },
        {   "data": 'email'  },
        {
            "className":      'options',
            "data":           null,
            "render": function(data, type, full, meta){
               if (full.activated) {
                   return '<button class="btn btn-mini btn-primary pull-right"> Enabled</button>';
               } else {
                   return '<button class="btn btn-mini btn-danger pull-right"> Disabled</button>';
               }
            }
        }
    ],

    // ...and so on

});

【讨论】:

  • 这很好用。我最初在回调中有它,因为大量操作导致表格重绘,但我没有阅读渲染方法。不能怪它。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 2023-03-05
  • 2015-11-04
相关资源
最近更新 更多