2017-07-19 3 views
1

ich jQuery DataTables verwende und hier ist das, was zur Zeit meine Tabelle wie folgt aussieht:jquery Tables neu laden, ohne Aktualisierung der Seite

enter image description here

nun von Rechts wegen jetzt, wenn ich Deactivate klicke ich Ajax bin mit meiner WebAPI anrufen Methode, um diesen Datensatz auf active = false .. so das Kontrollkästchen in der Tabelle sollte deaktiviert werden.

public IHttpActionResult Deletecode_AutoMake(int id) 
{ 
    code_AutoMake code_AutoMake = db.code_AutoMake.Find(id); 
    if (code_AutoMake == null) 
    { 
     return NotFound(); 
    } 

    code_AutoMake.Active = false; 
    db.Entry(code_AutoMake).State = EntityState.Modified; 
    db.SaveChanges(); 

    return Ok(code_AutoMake); 
} 

Das alles funktioniert wie erwartet .. aber die Tabelle neu zu laden nicht, es sei denn, wenn ich die Seite aktualisieren unkontrolliert tatsächlich das Kontrollkästchen zu sehen.

Hier ist wie meine DataTable eingerichtet ist.

$("#Auto-Make-Table").on("click", 
    ".js-automake-delete", 
    function() { 

     var link = $(this); 
     var autoMakeName = $(this).data("automake-name"); 
     var autoMakeId = $(this).data("automake-id"); 

     bootbox.confirm("Are you sure you want to delete this auto make?", 
      function (result) { 
       if (result) { 
        $.ajax({ 
         url: infoGetUrl + autoMakeId, 
         method: "DELETE", 
         success: function() { 
          autoMakeTable.reload(); 
          toastr.success(autoMakeName + " successfully deleted"); 
         }, 
         error: function (jqXHR, textStatus, errorThrown) { 
          var status = capitalizeFirstLetter(textStatus); 
          var error = $.parseJSON(jqXHR.responseText); 
          console.log(error); 
          toastr.error(status + " - " + error.exceptionMessage); 
         } 
        }); 
       } 
      }); 
    }); 

Meine Frage/Ziel ist es .. wie bekomme ich die Tabelle selbst zu aktualisieren/neu zu laden, ohne eine tatsächliche Seite aktualisieren?

Jede Hilfe wird geschätzt.

UPDATE

Versuchte autoMakeTable.ajax.reload();

erhielt diese Fehler mit:

enter image description here

dieses folgte:

enter image description here

Antwort

1

Angenommen, Ihre Datentabelle wie folgt zugeordnet ist,

var myDataTable = $('#myTableId').DataTable({ 
    //Rest code 
}) 

Dann in Ihrem success method für deactivate, Sie müssen nur Ihre Datentabelle wie folgt neu zu laden,

success: function() 
{ 
    myDataTable.ajax.reload(); 
    //rest code 
} 

vergessen Sie hinzufügen Ajax. Bitte überprüfen Sie diese official link, um mehr zu erfahren.

AKTUALISIERT:

Wenn Ihre Teilansicht strongly typed ist, dann wird Ihre Aktion-Methode zum Erfolg Methode aufrufe und macht es, wie Sie in Ihrer oben Erfolg Methode,

success: function() 
{ 
    $.ajax({ 
     url: "@Url.Action("Index", "code_AutoMake")", //As you have mentioned in the chat 
     method: "GET", 
     success: function (data) 
     { 
     //Here just render that partial view like 
     $("#myDiv").html('').html(data); //This will empty first then render the new data 
     } 
     }) 

Hinweis: Hier myDiv ist die id von div, wo sich Ihr Tisch befindet.

Hope it :)

+0

Siehe mein Update bitte –

+0

Ich glaube, Sie binden Ihre Datentabelle mit ** Ajax **. Und Sie müssen stattdessen Ihren Datatnamen ** myDataTable ** schreiben. Ich denke, der Name Ihrer Datatvariablen ist ** autoMakeTable **. Also müssen Sie 'autoMakeTable.ajax.reload();' innerhalb der Erfolgsmethode schreiben. –

+0

Tut mir leid, das habe ich gemacht .. Ich habe nur Ihren Code kopiert und eingefügt .. aber ich habe meinen persönlichen Tabellennamen 'autoMakeTable' .. verwendet und diese Fehler erhalten –

0

Erstelle in deiner PHP-Datei, oder in welcher Datei, eine Tabelle mit der gleichen HTML-Struktur wie deine aktuelle, aber mit neuen Daten, die du durch den Ajax-Aufruf erhalten hast.

$.post("newTable.php", function(data) { 
    $(".currentTable").html(data); 
}); 
+0

Sie hilft hier das Beispiel betrachten: https://datatables.net/forums/discussion/38969/reload-refresh-table-after-event –

+0

Ich glaube, OP Backend asp ist. net ... – davidkonrad

+0

ja der Code läuft mit jeder Backend-Sprache –

Verwandte Themen