Jquery DataTable不会在bootstrap模式中加载

时间:2016-06-15 06:06:20

标签: jquery twitter-bootstrap datatables bootstrap-modal

我无法在模态对话框中显示数据表。我得到一张空桌子。

//创建模态

中的数据表
createTableForModal(selectedLesson);

//show the modal

$('#editLessonModal').modal();

用于createTableForModal的代码

function createTableForModal()
{
     //this is just example code, but it doesn't work
var dataSet = [
        [ "Tiger Nixon", "System Architect", "Edinburgh", "5421", "2011/04/25", "$320,800" ],
        [ "Garrett Winters", "Accountant", "Tokyo", "8422", "2011/07/25", "$170,750" ]];

            $(document).ready(function() {
                $('#uploadVideosTable').DataTable( {
                    data: dataSet,
                    columns: [
                        { title: "Name" },
                        { title: "Position" },
                        { title: "Office" },
                        { title: "Extn." },
                        { title: "Start date" },
                        { title: "Salary" }
                    ],retrieve: true,
                } );
            } );
}

HTML FOR DATA TABLE

<table id="uploadVideosTable" class="table table-striped table-bordered table-hover table-responsive">
    <thead>
         <tr>
            <th>Name</th>
               <th>Position</th>
               <th>Office</th>
               <th>Extn.</th>
               <th>Start Date</th>
              <th>Salary</th>
             </tr>
    </thead>
</table>

2 个答案:

答案 0 :(得分:3)

JQuery DataTable 无法初始化屏幕上不可见的<table>元素。你必须先#34;显示&#34;在调用表初始化之前,该元素(可能通过.show()函数)。在这种情况下,它位于Bootstrap模式(默认情况下隐藏在加载模式)中,它将无法初始化。 @ShriCoder的代码可以正常工作,但问题是,如果你第二次打开模态时会发出一个错误,那就是&#34; DataTable无法重新初始化&#34;。我建议你修改你的代码:

  1. 让您的modal最初在加载时可见,初始化您的<table>,然后隐藏您的模态。这将需要几毫秒,而您的用户通常不会注意到。

  2. 在模式触发的<table>事件期间初始化shown.bs.modal 一次。您可以使用插件的内部$.fn.dataTable.isDataTable()实用程序功能检查<table>是否已初始化,或检查<table>是否已有&#34; dataTable&#34 ; css class。

  3. 另外,请注意使用插件的单独.js.css实用程序文件以实现BootStrap兼容性。它会优化您的<table>(用户的经验明确),以完全适合使用BootStrap的网页。

答案 1 :(得分:0)

在代码下面调用你的createTableForModal(selectedLesson)函数:

$('#code').on('shown.bs.modal', function (e) {
  //Call your Function here 
});

它会起作用。如果它还没有工作仍然发布jsfiddle我会检查