自定义按钮

按钮拥有可处理表的模块,用处非凡,但只有提供特定于您正在处理的领域的自定义按钮,才能释放按钮真正的灵活性。

例如,考虑一张课堂注册中学生的表格。只需一个按钮和 Select 扩展,就可以标记缺勤学生,先选择未到校学生,然后一键更新数据库。

另一个示例是重新加载数据表的按钮 - 我们将在下面探讨。

按钮可以执行的操作没有尽头;它只需执行您能够定义的 Javascript 函数!

所需参数

构建 Buttons 实例时,我们已经看到如何使用对象定义每个按钮。虽然您通常会扩展内置按钮,但这并不是必需的。

事实上,没有参数是必需的 - 然而,您几乎总是希望为按钮提供文本和操作。毕竟,没有这两项,按钮的功能就会非常有限!

在初始化期间定义

让我们扩展上面给出的重新加载示例。使用 Ajax 数据源的数据表(ajax),我们可以使用 ajax.reload() 方法从服务器重新加载数据。调用此方法的按钮为最终用户提供了刷新表数据的功能,可以按如下方式构建

$('#myTable').DataTable( {
    ajax: '/api/data'
    buttons: [
        {
            text: 'Reload',
            action: function ( e, dt, node, config ) {
                dt.ajax.reload();
            }
        }
    ]
} );

请注意,buttons.buttons.action 函数会传入四个参数。这些参数描述触发操作的事件、承载按钮的数据表和按钮本身。有关完整描述,请参阅参考文档。

自定义按钮类型

如上所示,定义自定义按钮对于单一的、一次性的按钮非常有用,但也可以定义一个可重用的按钮,它的可扩展性与预定义按钮完全相同。这可以通过将按钮定义对象附加到$.fn.dataTable.ext.buttons对象来完成,所使用的参数名称是初始化中引用按钮的名称。

对于上面的重新加载按钮,我们可能使用

$.fn.dataTable.ext.buttons.reload = {
    text: 'Reload',
    action: function ( e, dt, node, config ) {
        dt.ajax.reload();
    }
};

$('#myTable').DataTable( {
    ajax: '/api/data',
    buttons: [
        'reload'
    ]
} );

创建插件按钮的概念在这个示例中进一步探讨。

如果您创建了一个想要与 DataTables 社区分享的插件按钮,我们将很高兴收到您的来信