使用Bootbox在弹出窗口中显示数据表

Cod*_*elp 1 datatables bootbox

我有以下JS函数,可在弹出窗口中显示日期列表。

在返回所需数据的AJAX调用之后调用此函数。

function Show(currentSchedule) {
    var scheduleDates = currentSchedule.Dates.join(", ");

    bootbox.dialog({
        title: "Preview",
        message: "<div class='row'><div class='box'>" + scheduleDates + "</div></div>"
    });
}
Run Code Online (Sandbox Code Playgroud)

单击按钮时将调用此选项,它将日期显示为逗号分隔的值。

为了以表格格式显示此内容,我查看了Datatables.js库。

它需要一个模板表,期望的数据将被注入其中。当您在页面上显示数据时,这很好用。

<table style="width:100%" id="previewTable" class="table table-striped table-bordered">
    <thead>
        <tr>
            <th>
                Date(s)
            </th>
        </tr>
    </thead>
    <tbody></tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是一种在弹出窗口而不是页面中显示表格的方法。

提前致谢。

Gyr*_*com 6

强调

表以隐藏的<div>形式存储为模板。我正在克隆模板以设置唯一ID example

var container = $('#example-container').clone();
container.find('table').attr('id', 'example');
Run Code Online (Sandbox Code Playgroud)

使用show: false最初隐藏对话框。这是必需的,因此一旦显示对话框,我们就可以添加DataTables初始化函数。

var box = bootbox.dialog({
   show: false,
   message: container.html(),
   // ...
});    
Run Code Online (Sandbox Code Playgroud)

显示对话框初始化DataTables时处理事件。

box.on("shown.bs.modal", function() {
   $('#example').DataTable(); 
});
Run Code Online (Sandbox Code Playgroud)

显示对话框。

box.modal('show');          
Run Code Online (Sandbox Code Playgroud)

演示版

有关代码和演示,请参见下面的示例。

box.on("shown.bs.modal", function() {
   $('#example').DataTable(); 
});
Run Code Online (Sandbox Code Playgroud)
box.modal('show');          
Run Code Online (Sandbox Code Playgroud)