Кнопки DataTables.Net не отображаются - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть простой MVC-проект, использующий BootStrap4 и dataTables.Net. Ссылка на 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 голосов
/ 05 ноября 2018

Публикация, чтобы помочь кому-то спасти какое-то время ... Я должен отдать должное DataTables.net, у них довольно хорошая поддержка, но документация может быть хитрой.

После еще нескольких копаний и под руководством форума DataTables.Net. Вот что я придумала. В итоге я использовал DataTables.Net Downloader, чтобы сгенерировать все файлы CSS и Js в виде двух пакетных файлов со всеми функциями, которые я пытался добавить. Так что вместо DLing их по отдельности было всего 2 файла в пачках. Вот ссылка для загрузки Тогда Связки закончились как это.

    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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...