DataTables.Net按钮未显示

时间:2018-11-01 12:47:52

标签: javascript ajax model-view-controller datatables

我有一个简单的MVC项目,使用BootStrap4和dataTables.Net。  Link to DataTables.net它在页面加载后进行Ajax调用以检索表的数据。但是根据文档,我已经看过了。我无法将按钮显示在页面上。没有错误,没有按钮就可以按预期加载所有内容。

它似乎可以在资源管理器中正常工作,但不能在Chrome中工作。 我相信它与ajax调用有关,以检索数据,但尚未弄清楚。

在“布局”页面上调用以初始化CSS和JS:

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/schit")

在BundleConfig.cs中找到捆绑包

bundles.Add(new ScriptBundle("~/bundles/schit").Include(
             "~/Scripts/DataTables/media/js/jquery.dataTables.min.js"
            ,"~/Scripts/DataTables/extensions/Buttons/js/dataTables.buttons.js"
            , "~/Scripts/DataTables/extensions/Buttons/js/dataTables.html5.js"
            , "~/Scripts/DataTables/extensions/Buttons/js/buttons.print.js"
             , "~/Scripts/DataTables/extensions/Buttons/js/buttons.colVis.js"
             , "~/Scripts/DataTables/extensions/Buttons/js/buttons.flash.js"
       ));


        bundles.Add(new StyleBundle("~/Content/css").Include(
                  "~/Content/bootstrap.css",
                  "~/Content/site.css"
                  , "~/Content/DataTables/media/css/jquery.dataTables.min.css"
                  , "~/Content/DataTables/extensions/Buttons/css/buttons.dataTables.css"
            ));



<table id="ListTable">
<thead>
    <tr>
        <th>
            Center
        </th>
        <th>
            Account
        </th>
        <th>
            Ledger
        </th>
    </tr>
</thead>
<tbody>
<tr>
    <td></td>
</tr>
</tbody>

<script type="text/javascript">
$(function () {
    $('#ListTable').DataTable({

        ajax: '/Home/GetStuff',
        dataSrc: 'data',
        dom: 'Bfrtip',
        buttons: [
            {
                extend: 'copy',
                text: 'copy'
            },

            'excel',
            'csv',
            'pdf'
        ],
        columns: [
            { data: 'Center' },
            { data: 'Account' },
            { data: 'Ledger' }
        ]
    });
});

1 个答案:

答案 0 :(得分:0)

发布以帮助节省其他人的时间...我不得不归功于DataTables.net,他们提供了很好的支持,但是文档可能很棘手。

在进行一些进一步的挖掘之后,并以DataTables.Net论坛为指导。这是我想出的。我最终使用DataTables.Net下载器将所有CSS和Js文件生成具有我要添加的所有功能的2个捆绑文件。因此,与其单独进行DL分发,不如捆绑包中的2个文件。 Heres the Downloader Link 然后,捆绑包就这样结束了。

    bundles.Add(new ScriptBundle("~/bundles/DataTables").Include(
          "~/DataTables/dataTables.min.js"

            ));
        bundles.Add(new StyleBundle("~/Content/DataTables").Include(
            "~/DataTables/dataTables.min.css" 
        ))

然后在将要使用表格的“布局”页面或HTML页面上。包括脚本和内容 将内容放在头部。

@Styles.Render("~/Content/DataTables")

将脚本放置在结束标记之前

@Scripts.Render("~/bundles/DataTables")

在页面上,我的HTML几乎保持不变。我确实为表添加了BootStrap CSS类。

<table id="MyTable" class="table table-striped table-bordered table-hover table-condensed" style="width:100%">
<thead>
<tr>
    <th>
        Center
    </th>
    <th>
        Account
    </th>
    <th>
        Ledger
    </th>
  </tr>
</thead>
<tbody>

在该页面的“脚本”部分中。 这里的几件事...文档有点分散,但是有几种不同的方法可以进行设置。例如,“可能”有一个Ajax节,按钮可以直接声明,也可以用New构造函数单独实例化。

<script type="text/javascript">
    $(function () {

      var table =  $('#MyTable').DataTable({
            ajax: {
                url: 'Ajax Call for data',
                dataSrc: 'data'
            },
            columns: [
        { data: 'Center' },
        { data: 'Account' },
        { data: 'Ledger' }
    ]
        });


        new $.fn.dataTable.Buttons( table, {
            buttons: [
                'copy', 'excel', 'pdf'
            ]
        });

        table.buttons( 0, null ).container().prependTo(
            table.table().container()
        );
    });
</script>