ASPNETZERO — проблемы с таблицами данных

Я обновил свое решение до последних версий ASPNETZERO V4.x. У меня есть оба шаблона MVC5 и версии .NET Core. Я принял обновление, так как очень предпочитаю использовать плагин DataTables, который уже реализован во всем моем коде в существующей версии моего решения ASPNETZERO. Похоже, что ASPNETZERO реализовал «пользовательскую» версию DataTables. Поскольку теперь мои рабочие таблицы данных до моего обновления ломаются. Я скопировал редактируемый код таблиц данных, представленный в качестве примера в исходном коде Metronic, в свое решение ASPNETZERO, и оно отлично работало. Теперь, после обновления V4.X, он сломал этот код. Когда я смотрю на сценарии использования DataTables в загруженном решении для таких страниц, как Tenants, Roles и Users, я вижу параметры, применяемые к инициализации Datatables, которых нет в документации Datatables. Например, свойство инициализации listAction не найдено в документации Datatables.net.

        var dataTable = _$usersTable.DataTable({
        listAction: {
            ajaxFunction: _userService.getUsers,
            inputFilter: function () {
                return {
                    filter: $('#UsersTableFilter').val(),
                    permission: $("#PermissionSelectionCombo").val(),
                    role: $("#RoleSelectionCombo").val()
                };
            }
        },

Вышеизложенное наводит меня на мысль, что это «индивидуальная» версия Datatables, разработанная командой ASPNETZERO. Я не вижу никакой документации о том, как использовать эту «пользовательскую» версию, и документация с сайта DataTables.net не соответствует коду, который я вижу в предоставленном решении. Кто-нибудь еще сталкивался с такими проблемами? Есть ли документация по этой реализации "Пользовательских" таблиц данных?

@Alper Когда я сказал жестко запрограммированный, я имел в виду что-то вроде этого:

        <table class="table table-bordered table-striped table-hover" id="tblRel">
        <thead>
            <tr>
                <td>Version</td>
                <td>Publish Date MST</td>
                <td>Publish Date <b>GMT</b></td>
                <td>Release notes</td>
            </tr>
        </thead>
        <tbody>
            <tr class="danger">
                <td>1.0.0.5</td>
                <td></td>
                <td></td>
                <td>
                    <ul>
                        <li>Updated tooltip for resident funding icon on resident index page.</li>
                        <li>Contacts - Added additional column for contact name and emergency contact flag</li>
                        <li>HR - Jobcode - Band level is no longer a required field</li>
                    </ul>
                </td>
            </tr>
            <tr>
        </tbody>
    </table>

И что-то вроде этого:

<table class="table table-striped table-hover table-bordered" id="Contacts">
                        <thead>
                            <tr>
                                <th>@L("ContactName")</th>
                                <th>@L("ContactType")</th>
                                <th>@L("ContactCategory")</th>
                                <th>@L("Email")</th>
                                <th>@L("Phone")</th>
                                <th>@L("DefaultYN")</th>
                                <th>@L("EmergencyYN")</th>
                                <th>@L("Edit")</th>
                            </tr>
                        </thead>
                        <tbody>
                            @if (Model.Company.Contacts.Count != 0)
                            {
                                foreach (var ctc in Model.Company.Contacts)
                                {
                                    <tr>
                                        <td>@(ctc.Contact.ContactName)</td>
                                        <td>@(ctc.Contact.TypeName)</td>
                                        <td>@(ctc.Contact.CategoryName)</td>
                                        <td>@(ctc.Contact.Email)</td>
                                        <td>@(ctc.Contact.Phone)</td>
                                        @if (ctc.Contact.DefaultYN)
                                        {
                                            <td>@L("Yes")</td>
                                        }
                                        else
                                        {
                                            <td>@L("No")</td>
                                        }
                                        @if (ctc.Contact.EmergencyContactYN)
                                        {
                                            <td>@L("Yes")</td>
                                        }
                                        else
                                        {
                                            <td>@L("No")</td>
                                        }
                                        <td>
                                            <a class="edit btn btn-xs btn-primary" href="javascript:;">@L("Edit") </a>
                                        </td>
                                    </tr>
                                }
                            }
                        </tbody>
                    </table>

В приведенных выше двух примерах данные таблицы не извлекаются кодом Datatables. Простая инициализация, которую я использовал для этих таблиц, больше не работает в V4.X.


person exlnt    schedule 10.08.2017    source источник


Ответы (3)


Я могу подтвердить, что закомментирование всех пользовательских изменений AspNetZero в DataTables позволит корректно отображать статическую HTML-таблицу. С внесенными изменениями экран Loading... зависает.

Хотя мне очень нравится AspNetZero, это уже второй раз, когда я обнаружил пользовательское изменение в библиотеке, которое нарушило ее поведение по умолчанию, что привело к часам и часам устранения неполадок (другое изменение касалось jquery.validation, где значение по умолчанию .Validate() было переопределено, чтобы оно больше не проверяется при отправке формы).

Я не возражаю против изменений, если они задокументированы.

В частности: datatable.ajax.js нарушает поведение таблиц данных по умолчанию. Он назначает функцию ajax, которая затем предотвращает работу статического поведения HTML по умолчанию. Чтобы исправить код без удаления файлов AspNetZero по умолчанию... выполните следующие действия:

$('#example').dataTable( {
  ajax: null
});
person Steve Ar    schedule 06.10.2017

В проекте используется версия Datatables 1.10.12. Это не полностью настроенная версия, но новые функции были добавлены без нарушения существующих функций. Вы можете игнорировать пользовательские функции и использовать все, что основано на версии 1.10.12.

Это комбинированная версия всех плагинов, включенных в файл с именем datatables.all.min.js. Этот файл создан командой Metronic. И Команда Aspnet Zero использовала этот файл для полной интеграции с Metronic Theme.

Вы можете увидеть включенные библиотеки в datatables.all.min.js;

  • JSZip 2.5.0
  • pdfmake 0.1.18
  • Таблицы данных 1.10.12
  • Кнопки 1.2.1
  • Видимость столбца 1.2.1
  • Экспорт флэш-памяти 1.2.1
  • Экспорт HTML5 1.2.1
  • Просмотр для печати 1.2.1
  • ColReorder 1.3.2
  • Фиксированные столбцы 3.2.2
  • Фиксированный заголовок 3.1.2
  • Отзывчивый 2.1.0
  • Переупорядочивание строк 1.1.2
  • Скроллер 1.4.2
  • Выберите 1.2.0

Настройки Aspnet Zero Team:

Переопределение значений по умолчанию в файле ниже:

\wwwroot\Common\Scripts\Datatables\datatables.defaults.js

Добавлена ​​функция listAction для создания адаптера для получения данных из ABP WebApi Services. Вы можете проверить файл datatables.ajax.js, чтобы увидеть, как все делается.

\wwwroot\Common\Scripts\Datatables\datatables.ajax.js

Добавлено «rowAction» для создания кнопки действия. Вы можете проверить файл datatables.record-actions.js, чтобы увидеть, как все делается.

\wwwroot\Common\Scripts\Datatables\datatables.record-actions.js

Плагин находится здесь:

wwwroot/metronic/assets/global/plugins/datatables/datatables.all.min.js

Все файлы перевода находятся здесь:

wwwroot\Common\Scripts\Datatables\Translations\

Локализация (на основе культуры пользователя) выполняется здесь:

\wwwroot\Common\Scripts\Datatables\datatables.defaults.js
person Alper Ebicoglu    schedule 10.08.2017
comment
Спасибо за всю эту информацию! Вы действительно должны были поместить это в свою документацию как часть последнего выпуска. Один вопрос, как мне инициализировать статическую таблицу данных. У меня есть жестко закодированная таблица HTML на странице, и я использовал строку: $(#MyTable).DataTable(), чтобы сделать ее Datatable. Кажется, это не работает в V4.X? - person exlnt; 11.08.2017
comment
что вы подразумеваете под жестко закодированной таблицей? Можете ли вы предоставить нам несколько кодов - person Alper Ebicoglu; 11.08.2017
comment
удалите все настройки нуля aspnet и проверьте, работает ли ваш код. Я имею в виду не включать datatables.defaults.js , datatables.ajax.js, datatables.record-actions.js. - person Alper Ebicoglu; 13.08.2017
comment
Это будет непросто, учитывая, что эти файлы являются частью пакета, и все страницы наследуют страницу макета. Любые другие идеи? - person exlnt; 13.08.2017
comment
так почему бы вам не удалить 3 строки из пакета за 1 минуту. - person Alper Ebicoglu; 14.08.2017
comment
Есть ли специальный пакет, который мы можем добавить в package.json, чтобы использовать все ваши модификации в нашем проекте *.Web.Public? - person kamalpreet; 05.10.2019

Сделайте запрос ajax нулевым для ваших скриптов Datatable.

 $('#LeaveTable').dataTable( {
  ajax: null
});
person Abdus Salam Azad    schedule 09.10.2017