7

列のカスタマイズされたレンダリングを含むJqueryDatatableを使用しています。値に基づいて、その中の特定の制御を無効にする必要があります。投稿後に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 oTable = $('#groups').dataTable();
oTable.fnClearTable();
oTable.fnDestroy();
groupsList();
于 2015-08-06T10:35:05.020 に答える
0

新しいDatatableバージョンの場合、これで次のことができます。

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

私の場合、それを再描画する必要がありました。ただし、再描画する前に、新しいデータをクリアして追加することもできます。

于 2015-12-14T10:03:44.983 に答える
-1

これがあなたが探しているものではないことを確認しますか?

oTable.fnReloadAjax();

それは私のために働いた。現在のajaxURL構成を使用してグリッドをリロードします。

于 2013-11-27T07:37:46.013 に答える