ASPNETZERO - 数据表问题
ASPNETZERO - Datatables issues
我已将我的解决方案升级到最新版本的 ASPNETZERO V4.x。我有两个模板 MVC5 和 .NET Core 版本。我进行了升级,因为我非常喜欢使用 DataTables 插件,并且已经在我的 ASPNETZERO 解决方案的现有版本中实现了所有代码。
看来 ASPNETZERO 已经实现了 "custom" 版本的 DataTables。现在我升级前的工作数据tables 正在中断。
我已将 Metronic 源代码中作为示例提供的 editable datatables 代码复制到我的 ASPNETZERO 解决方案中,并且运行良好。现在在 V4.X 升级后它已经破坏了这个代码。当我在下载的解决方案中查看租户、角色和用户等页面的 DataTables 使用脚本时,我看到选项被应用于 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()
};
}
},
以上内容让我相信这是 ASPNETZERO 团队的 "custom" 版本的 Datatables。我没有看到任何关于如何使用此 "custom" 版本的文档,并且 DataTables.net 站点的文档与我在提供的解决方案中看到的代码不匹配。还有其他人 运行 遇到过此类问题吗?
是否有关于此 "Custom" 数据表实施的文档?
@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>
在上面的两个例子中,table 数据没有被 Datatable 代码获取。我在这些 table 上使用的简单初始化在 V4.X 中不再有效。
项目中使用的Datatables版本为1.10.12。
它不是完全定制的版本,但在不破坏现有功能的情况下添加了新功能。您可以忽略自定义函数并使用基于 1.10.12 版本的所有内容。
它是文件名 datatables.all.min.js 中包含的所有插件的组合版本。
此文件由 Metronic Team 创建。 Aspnet Zero Team 使用该文件与 Metronic 主题完全兼容集成。
You can see the included libraries in datatables.all.min.js;
- JSZip 2.5.0
- pdfmake 0.1.18
- DataTables 1.10.12
- Buttons 1.2.1
- Column visibility 1.2.1
- Flash export 1.2.1
- HTML5 export 1.2.1
- Print view 1.2.1
- ColReorder 1.3.2
- FixedColumns 3.2.2
- FixedHeader 3.1.2
- Responsive 2.1.0
- RowReorder 1.1.2
- Scroller 1.4.2
- Select 1.2.0
Aspnet 零团队定制是;
覆盖以下文件中的默认值:
\wwwroot\Common\Scripts\Datatables\datatables.defaults.js
添加了 "listAction" 函数来创建一个从 ABP WebApi 服务获取数据的适配器。您可以检查 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
我可以确认注释掉 AspNetZero 对数据表的所有自定义更改将允许静态 HTML table 正确呈现。更改到位后,Loading...
屏幕卡住了。
虽然我非常喜欢 AspNetZero,但这是我第二次发现对库的自定义更改破坏了它的默认行为,导致数小时的故障排除(另一个更改是 jquery.validation
,其中默认 .Validate()
已被覆盖,因此它不再在表单提交时验证。
我不介意更改 -- 如果它们被记录在案。
具体来说:datatable.ajax.js 打破了 datatables 的默认行为。 它分配了一个 ajax 函数,然后阻止了默认的静态HTML 工作行为。要修复您的代码而不必删除 AspNetZero 默认文件...请执行以下操作:
$('#example').dataTable( {
ajax: null
});
在您的数据表脚本上使 ajax 请求为空。
$('#LeaveTable').dataTable( {
ajax: null
});
我已将我的解决方案升级到最新版本的 ASPNETZERO V4.x。我有两个模板 MVC5 和 .NET Core 版本。我进行了升级,因为我非常喜欢使用 DataTables 插件,并且已经在我的 ASPNETZERO 解决方案的现有版本中实现了所有代码。 看来 ASPNETZERO 已经实现了 "custom" 版本的 DataTables。现在我升级前的工作数据tables 正在中断。 我已将 Metronic 源代码中作为示例提供的 editable datatables 代码复制到我的 ASPNETZERO 解决方案中,并且运行良好。现在在 V4.X 升级后它已经破坏了这个代码。当我在下载的解决方案中查看租户、角色和用户等页面的 DataTables 使用脚本时,我看到选项被应用于 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()
};
}
},
以上内容让我相信这是 ASPNETZERO 团队的 "custom" 版本的 Datatables。我没有看到任何关于如何使用此 "custom" 版本的文档,并且 DataTables.net 站点的文档与我在提供的解决方案中看到的代码不匹配。还有其他人 运行 遇到过此类问题吗? 是否有关于此 "Custom" 数据表实施的文档?
@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>
在上面的两个例子中,table 数据没有被 Datatable 代码获取。我在这些 table 上使用的简单初始化在 V4.X 中不再有效。
项目中使用的Datatables版本为1.10.12。 它不是完全定制的版本,但在不破坏现有功能的情况下添加了新功能。您可以忽略自定义函数并使用基于 1.10.12 版本的所有内容。
它是文件名 datatables.all.min.js 中包含的所有插件的组合版本。 此文件由 Metronic Team 创建。 Aspnet Zero Team 使用该文件与 Metronic 主题完全兼容集成。
You can see the included libraries in datatables.all.min.js;
- JSZip 2.5.0
- pdfmake 0.1.18
- DataTables 1.10.12
- Buttons 1.2.1
- Column visibility 1.2.1
- Flash export 1.2.1
- HTML5 export 1.2.1
- Print view 1.2.1
- ColReorder 1.3.2
- FixedColumns 3.2.2
- FixedHeader 3.1.2
- Responsive 2.1.0
- RowReorder 1.1.2
- Scroller 1.4.2
- Select 1.2.0
Aspnet 零团队定制是;
覆盖以下文件中的默认值:
\wwwroot\Common\Scripts\Datatables\datatables.defaults.js
添加了 "listAction" 函数来创建一个从 ABP WebApi 服务获取数据的适配器。您可以检查 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
我可以确认注释掉 AspNetZero 对数据表的所有自定义更改将允许静态 HTML table 正确呈现。更改到位后,Loading...
屏幕卡住了。
虽然我非常喜欢 AspNetZero,但这是我第二次发现对库的自定义更改破坏了它的默认行为,导致数小时的故障排除(另一个更改是 jquery.validation
,其中默认 .Validate()
已被覆盖,因此它不再在表单提交时验证。
我不介意更改 -- 如果它们被记录在案。
具体来说:datatable.ajax.js 打破了 datatables 的默认行为。 它分配了一个 ajax 函数,然后阻止了默认的静态HTML 工作行为。要修复您的代码而不必删除 AspNetZero 默认文件...请执行以下操作:
$('#example').dataTable( {
ajax: null
});
在您的数据表脚本上使 ajax 请求为空。
$('#LeaveTable').dataTable( {
ajax: null
});