2017-06-02 2 views
0

Ich benutze handsontable als Frontend zu einer MySQL-Datenbank, die auf einem Webserver sitzt. Benutzer filtern, sortieren, ändern usw. die Daten auf dem Front-End handsontable.handsontable - Daten aktualisieren und Filter- und Sortierbedingungen pflegen

Änderungen treten in der Back-End-MySQL-Datenbank aus verschiedenen Gründen auf. Und ich muss diese Informationen wieder mit dem Benutzer Frontend synchronisieren.

Ich kann dies einfach mit einer HTTP-Anfrage tun, um die Daten aus der Datenbank erneut herunterzuladen und diese Daten mit dem folgenden Code-Snippet in das handsontable zu schreiben.

$http({ 
    method: "POST", 
    url: "my-data-url", 
    data: "my-post-data" 
    }).then(function(response){ 
    // response contains the handsontable data 
    var json_response = response.data; 
    // Update the data in my table instance 
    hot.updateSettings({ 
     data: json_response 
    }) 
    // hot looses its sort and filter conditions... 
    // how can I maintain these or re-apply them?? 
    }); 

Das Problem ist dieser Code alle Benutzer aktuellen Sortier- und Filterbedingungen löscht. Wo möchte ich diese beibehalten, wenn das handsontable Datenobjekt aktualisiert wird. Weiß jemand, wie ich das erreichen kann?

Antwort

0

Ich habe es geschafft, dieses Problem zu lösen. Die Lösung für jeden Aspekt ist wie folgt:

Filter

Aktualisierung der Version von Handsontable auf Version v1.11.0 gehalten, um die Filter auf seine eigene, wenn die Dateneinstellung zu aktualisieren.

Sortierung

Aktualisierung der obigen Verfahren wie folgt:

$http({ 
    method: "POST", 
    url: "my-data-url", 
    data: "my-post-data" 
}).then(function(response){ 
    // response contains the handsontable data 
    var json_response = response.data; 

    // Get sort data of handsontable prior to updating the data setting 
    if (isSorted(hot) == true) { 
     var sortData = getSortData(hot) 
    } 

    // Update the data in my table instance 
    hot.updateSettings({ 
     data: json_response 
    }) 

    // Re-apply previous sorts 
    if (sortData) { 
     hot.sort(sortData.sortColumn, sortData.sortOrder); 
    } 

    }); 

// Determines if sorts have been applied 
var isSorted = function (hot_instance) { 
    return hot_instance.sortingEnabled && typeof hot_instance.sortColumn != 'undefined' && typeof hot_instance.sortOrder != 'undefined'; 
} 

// gets the sort data for a handsontable passed 
var getSortData = function (hot_instance) { 
    var sortData = []; 
    // Get sorted column number 
    var columnNo = hot_instance.sortColumn; 
    // Get current sort order of column 
    // false = desceding order 
    var sortOrder = hot_instance.sortOrder; 
    sortData.sortColumn = columnNo; 
    sortData.sortOrder = sortOrder; 
    return sortData; 
} 

Hoffnung, dass jemand mit einem ähnlichen Problem hilft.