web-dev-qa-db-fra.com

rafraîchir ou recharger des données

J'utilise Jquery Datatable, qui inclut un rendu personnalisé pour les colonnes. Sur la base des valeurs, je dois désactiver certains contrôles dans celui-ci. Je veux recharger/actualiser/relier mon jquery datatable après le post. Comment puis je faire ça?

**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>

Mise à jour: * *

J'ai trouvé la réponse:

  • effacer la table (fnClearTable)

  • ajouter de nouvelles données à la table (fnAddData)

  • redessiner la table (fnDraw)

7
user1480864

Si la réponse est:

clear the table ( fnClearTable )

add new data to the table ( fnAddData)

redraw the table ( fnDraw )
2
user1480864

D'abord, obtenez simplement une référence datatable, en utilisant 

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

Après cela, faites ce que vous voulez:

Clear the table : oTable.fnClearTable();

Redraw the table : oTable.fnDraw();

Add new data to the table : oTable.fnAddData();
19
Prateek

Cela a fonctionné pour moi:

// 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();

Maintenant, lancez l’appel que vous avez fait Initialement pour rétablir le tableau:

window.table = $('#TableID').dataTable({
                    ...
                });
2
Serj Sagan

Vous appelez à nouveau .dataTable() sur la table, sans aucun argument.

Donc, si vous aviez fait quelque chose comme ça:

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

Vous pouvez ensuite faire ceci pour l'actualiser:

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

Ne l'appelle plus avec les arguments; ça n'aime pas ça.

0
KRyan

Pour les nouvelles versions de Datatable, cela fera le travail:

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

Dans mon cas, je devais simplement le redessiner. Mais vous pouvez également effacer et ajouter de nouvelles données avant de redessiner.

0
Yush0
var oTable = $('#groups').dataTable();
oTable.fnClearTable();
oTable.fnDestroy();
groupsList();
0
joy