刷新或重新载入数据表
我正在使用Jquery Datatable,其中包括为列自定义呈现。基于价值观,我必须禁用某些控制。我想在post之后重新加载/刷新/重新绑定我的jquery数据表。我怎样才能做到这一点?刷新或重新载入数据表
**Controller:**
[HttpPost]
public JsonResult PostAction(MyMOdel model)
{
//save changes to DB
return Json(new
{
Success = result,
});
}
public ActionResult MyAction()
//grab records from DB and return JSON
}
**View:**
@using (Ajax.BeginForm("PostAction", "ControllerName", null,
new AjaxOptions
{
UpdateTargetId = "update-message",
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
OnSuccess = "updateSuccess"
}, new { @id = "myForm"
}
))
{
<table id="myTbl" class="display"><tr><td>col1</td></tr></table>
}
<script type="text/javascript">
var oTable = $('#myTbl').dataTable({
"sAjaxSource": "/ControllerName/MyAction",
<!-- more config -->
function updateSuccess(data, status, xhr) {
//refresh datatable;
}
</script>
更新:* *
我找到了答案:
清台(fnClearTable)
新数据添加到表(fnAddData )
重绘表(fnDraw)
Ifound答案:
clear the table (fnClearTable)
add new data to the table (fnAddData)
redraw the table (fnDraw)
你再打电话来放在桌子上.dataTable()
,不带任何参数。
所以,如果你做了这样的事情:
$('#someTable').dataTable({
someAttribue: someValue
});
你可以再后来这样做是为了刷新:
$('#someTable').dataTable();
不要参数再次调用它;它不喜欢那样。
它没有工作。通过sAjaxSource加载jquery数据表格 – user1480864 2012-08-02 20:57:20
@ user1480864:然后看到我对这个问题的评论;我们需要更多信息。 – KRyan 2012-08-02 21:35:48
这不是这种情况......这会在第一次调用之后留下伪像...... – 2014-10-31 00:52:02
首先先手的DataTable参考,使用
var oTable = $("#someTable").dataTable();
之后做什么,你想:
Clear the table : oTable.fnClearTable();
Redraw the table : oTable.fnDraw();
Add new data to the table : oTable.fnAddData();
只是为了阐明它是var oTable = $(“#someTable”)。dataTable(); (注意函数的骆驼情况)。 – 2013-11-19 01:03:24
谢谢。将其更改为“dataTable”。 – Prateek 2014-02-13 09:03:15
函数名现在是oTable.draw()等api v.1.10 – 2014-08-09 14:08:53
你确定这是不是你要找的东西:
oTable.fnReloadAjax();
这对我有用。它使用当前的ajax url config重新加载网格。
pt运行时错误:对象不支持属性或方法'fnReloadAjax' – 2013-12-13 16:52:12
这为我工作:
// Initially
window.table = $('#TableID').dataTable({
...
});
// Later, when table needs to be refreshed
window.table.fnDestroy();
// depending on the version, maybe just .destroy() instead of .fnDestroy();
现在只要你做了最初调用重新初始化表:
window.table = $('#TableID').dataTable({
...
});
var oTable = $('#groups').dataTable();
oTable.fnClearTable();
oTable.fnDestroy();
groupsList();
对于较新的数据表的版本,这将做的工作:
var table = $('#yourDataTable').DataTable({...});
table.columns.adjust().draw();
就我而言,我只需要重绘它。但是,您也可以在重绘之前清除并添加新数据。
请在这里包含您的代码,以便我们可以看到发生了什么。尽量将其缩减到只需要最小代码就可以看到发生了什么。 – KRyan 2012-08-02 21:00:23