我已将我的解决方案升级到最新版本的ASPNETZERO V4.x.我有MVC5和.NET Core两个模板。我进行了升级,因为我更喜欢使用DataTables插件,并且已经在现有版本的ASPNETZERO解决方案中实现了我的所有代码。 ASPNETZERO似乎已经实现了DataTables的“自定义”版本。现在我在升级之前工作的数据表正在破碎。 我已将Metronic源代码中作为示例提供的可编辑数据表代码复制到我的ASPNETZERO解决方案中,并且它运行良好。现在在V4.X升级之后,它已经破坏了这段代码。当我在下载的解决方案中查看租户,角色和用户等页面中的DataTables用法脚本时,我看到应用于Datatables文档中不存在的Datatables初始化的选项。例如,在Datatables.net文档中找不到初始化属性“listAction”。
var dataTable = _$usersTable.DataTable({
listAction: {
ajaxFunction: _userService.getUsers,
inputFilter: function () {
return {
filter: $('#UsersTableFilter').val(),
permission: $("#PermissionSelectionCombo").val(),
role: $("#RoleSelectionCombo").val()
};
}
},
上面让我相信这是ASPNETZERO团队的Datatables的“定制”版本。我没有看到有关如何使用此“自定义”版本的任何文档,并且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。
答案 0 :(得分:2)
项目中使用的数据表版本为 1.10.12 。 它不是完全自定义的版本,但添加了新功能而不破坏现有功能。您可以忽略自定义函数并使用基于1.10.12版本的所有内容。
它是文件名datatables.all.min.js中包含的所有插件的组合版本。 此文件由Metronic Team创建。 Aspnet Zero Team使用该文件与Metronic Theme完全兼容。
您可以在datatables.all.min.js;
中看到包含的库
- JSZip 2.5.0
- pdfmake 0.1.18
- DataTables 1.10.12
- 按钮1.2.1
- 列可见性1.2.1
- Flash export 1.2.1
- HTML5 export 1.2.1
- 打印视图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
- 选择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
答案 1 :(得分:2)
我可以确认,注释掉所有AspNetZero对DataTables的自定义更改将允许静态HTML表格正确呈现。随着更改,Loading...
屏幕卡住了。
虽然我非常喜欢AspNetZero,但这是我第二次发现对库的自定义更改,打破了它的默认行为,这导致了数小时的故障排除(另一个更改是jquery.validation
其中默认.Validate()
被覆盖,以便在表单提交时不再对其进行验证。
我不介意这些变化 - 如果有记录。
具体来说: datatable.ajax.js打破了数据表的默认行为。它分配了一个ajax函数,然后防止默认的静态HTML行为起作用。要修复代码而不必删除AspNetZero默认文件,请执行以下操作:
$('#example').dataTable( {
ajax: null
});
答案 2 :(得分:0)
在数据表脚本上创建ajax请求null。
$('#LeaveTable').dataTable( {
ajax: null
});