【发布时间】:2019-12-16 13:55:51
【问题描述】:
我几乎没有使用 jQuery 或 JSON 的经验。但是,我在网上找到了一个很棒的小教程,它引导我完成了创建 jQuery DataGrid 表的步骤——这正是我所需要的。而且效果很好。
问题是,我有时需要重新加载表格。而且,我无法工作。
这是我的控制器
public ActionResult AddSupplies()
{
var q = db.ICS_Orders;
return View(q);
}
这是我使用 DataGrid 的局部视图
l IEnumerable<ICS20web.Models.ICS_Orders>
@{
Layout = null;
}
<div id="divSupplies">
<h3>Monthly Requisition: Supplies and Forms</h3>
<div class="row">
<div class="col-md-12">
<div class="panel panel-primary list-panel" id="list-panel">
<div class="panel-heading list-panel-heading">
<h1 class="panel-title list-panel-title">Requested Supplies</h1>
</div>
<div class="panel-body">
<table id="supplies-data-table"
class="table table-striped table-bordered"
style="width:100%">
<thead>
<tr>
<th>Requisition Number</th>
<th>Supplies</th>
<th>Amount Ordered</th>
</tr>
</thead>
<tbody>
@*@foreach (var asset in Model)*@
@foreach (var asset in Model.Where(w => w.RequisitionNumber == ViewBag.TransNum))
{
<tr>
<td>@asset.RequisitionNumber</td>
<td>@asset.Supply</td>
<td>@asset.UnitsOrdered</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
<hr />
<!-- Add Java Script-->
@Scripts.Render("~/Scripts/jquery-1.10.2.min.js")
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.js")
@Scripts.Render("~/Scripts/CheckContacts.js")
@Scripts.Render("~/Scripts/Supplies.js")
<script type="text/javascript">
$(document).ready(function () {
$('#supplies-data-table').DataTable();
});
我的所有研究表明,重新加载表格的正确方法是:
$('#supplies-data-table').DataTable().ajax.reload();
但这不起作用。我收到以下 JSON 错误
“DataTables 警告:表 id=supplies-data-table - JSON 响应无效。
我似乎找不到任何可以帮助我理解原因或解决方法的内容。我很困惑该表将第一次加载,并在回邮时正确加载。但是当强制重新加载时 - 我得到这个错误并且它失败了。
【问题讨论】:
-
ajax.reload()从 ajax 源重新加载表。您的代码没有显示任何 ajax 源的迹象。您还在已填充的表上初始化DataTable,那么重新加载究竟对您有什么帮助? -
您需要将表格加载为空(HTML);设置
ajax选项以从后台请求数据;使您的支持脚本以有效格式的表源数据响应;每当您需要刷新表格时,请使用ajax.reload()。有关上述选项、API 方法和相关代码示例的详细说明,请参阅 datatables.net。
标签: c# jquery json datatables asp.net-mvc-5