exl*_*lnt 1 c# asp.net datatable aspnetboilerplate
我已将我的解决方案升级到最新版本的 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()
};
}
},
Run Code Online (Sandbox Code Playgroud)
以上让我相信这是 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>
Run Code Online (Sandbox Code Playgroud)
和这样的事情:
<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>
Run Code Online (Sandbox Code Playgroud)
在以上两个示例中,Datatables 代码未获取表数据。我在这些表上使用的简单初始化在 V4.X 中不再有效。
小智 6
我可以确认,注释掉 AspNetZero 对 DataTables 的所有自定义更改将允许静态 HTML 表正确呈现。随着到位的变化,Loading...屏幕卡住了。
虽然我非常喜欢 AspNetZero,但这是我第二次发现库的自定义更改破坏了它的默认行为,这导致了数小时的故障排除(另一个更改是覆盖jquery.validation默认值的位置.Validate(),因此它不再在表单提交)。
我不介意这些变化——如果它们被记录在案。
具体来说:datatable.ajax.js 打破了数据表的默认行为。 它分配一个 ajax 函数,然后阻止默认的静态 HTML 行为工作。要在无需删除 AspNetZero 默认文件的情况下修复您的代码...请执行以下操作:
$('#example').dataTable( {
ajax: null
});
Run Code Online (Sandbox Code Playgroud)