7

我正在使用 Jquery Datatable,其中包括列的自定义呈现。根据值,我必须禁用其中的某些控件。我想在发布后重新加载/刷新/重新绑定我的 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 )

4

7 回答 7

19

首先只是获取数据表引用,使用

var oTable = $("#someTable").dataTable();

之后做任何事情,你想要:

Clear the table : oTable.fnClearTable();

Redraw the table : oTable.fnDraw();

Add new data to the table : oTable.fnAddData();
于 2013-02-18T19:12:23.833 回答
2

我找到了答案:

clear the table ( fnClearTable )

add new data to the table ( fnAddData)

redraw the table ( fnDraw )
于 2012-08-03T18:08:44.760 回答
2

这对我有用:

// 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({
                    ...
                });
于 2014-10-31T01:51:19.363 回答
0

你只是.dataTable()再次在桌子上打电话,没有任何争论。

所以如果你做了这样的事情:

$('#someTable').dataTable({
    someAttribue: someValue
});

然后,您可以稍后执行此操作以刷新它:

$('#someTable').dataTable();

不要再用参数调用它;它不喜欢那样。

于 2012-08-02T20:49:23.990 回答
0

对于较新的数据表版本,这将完成工作:

var table = $('#yourDataTable').DataTable({...});
table.columns.adjust().draw();

就我而言,我只需要重绘它。但您也可以在重绘之前清除并添加新数据。

于 2015-12-14T10:03:44.983 回答
0
var oTable = $('#groups').dataTable();
oTable.fnClearTable();
oTable.fnDestroy();
groupsList();
于 2015-08-06T10:35:05.020 回答
-1

你确定这不是你要找的:

oTable.fnReloadAjax();

这对我有用。它使用当前的 ajax url 配置重新加载网格。

于 2013-11-27T07:37:46.013 回答