2016-11-15 2 views
1

I Kendo Grid Spalte wie dieses:Zurücksetzen Kendo Grid Spalte

$("#lstCategory").kendoGrid({ 
     dataSource: { 
      data: info, 
      autoSync: true, 
      schema: { 
       model: { 
        fields: { 
         category: { editable: false, type: "string" }, 
         subCategory: { editable: false, type: "string" } 
        } 
       } 
      }, 
      pageSize: 7, 
      group: { 
       field: "category", 
       aggregates: [ 
        { field: "category", aggregate: "count" } 
       ] 
      } 
     }, 
     sortable: true, 
     scrollable: false, 
     pageable: true, 
     editable: true, 
     columns: [ 
      { field: "category", title: "Categoría", aggregates: ["count"], groupFooterTemplate: "Total: #=count#" }, 
      { field: "subCategory", title: "Subcategoria" }, 
      { command: "destroy", title: "", width: "150px" } 

     ] 
    }); 
} 

Es füge ich Felder für die Zeit nach Aktion. Das Problem ist ich dieses Raster nach Post zurücksetzen will es spülen und eine andere Wert einfügen Ich versuche nächste Befehle zu verwenden:

$("#lstCategory").empty(); // this one dissapear kendo grid 
    $('#lstCategory').data('kendoGrid').refresh(); 
    $('#lstCategory').data().kendoGrid.destroy(); 

aber keiner von ihnen meine Kendo nach Post spülen kann, was das Problem sein da?

Update:

Versuchen als Dread Pirate Antwort:

nach Post Aktion Ich sende diese:

var grid = $("#lstCategory").getKendoGrid(); 
        var info = refeshInfoFromServer(); 
        grid.dataSource.data(info); 

function refeshInfoFromServer() { 
    return $("#lstCategory").data("kendoGrid").dataSource.read(); 
} 

Es scheint zu funktionieren, aber meine Seite beim Laden stecken. Google Chrome Inspector zurückgeben

+0

Scheibe Fehler ausgelöst wird, wenn das Schema nicht auf Objekt überein, die Sie vom Server erhalten oder aus gegebenen Liste von Objekten. Sie müssen definieren, in welche Eigenschaft Daten kommen. Wenn Sie nicht angeben, funktioniert es mit einigen Standardwerten. http://docs.telerik.com/kendo-ui/api/javascript/data/datasource – Ademar

+0

Das ist nicht das, was ich vorgeschlagen habe ... Sie müssen Informationen vom Server neu füllen * wie auch immer Sie es beim ersten Mal * getan haben. Es gibt keine Möglichkeit, dass info = grid.dataSource.read(), da die Methode read() eine Promise * not * -Daten zurückgibt. Also, was Sie jetzt tun, ist das Setzen der Daten der dataSource zu einer Promise ... die nicht einmal im entferntesten zur Arbeit geht und deshalb den Slice error bekommt ... da das Slice auf der Promise Sie aufgerufen wird statt einer legitimen Datenmenge hineingeschoben. Sie müssen uns zeigen, wie die Informationen in erster Linie ausgefüllt wurden. –

Antwort

1

Sie möchten die Daten für das Raster vom Server nach dem Post erneut lesen?

grid.refresh() bindet das Gitter nur an die aktuelle dataSource ... es erzwingt nicht, dass die zugrunde liegende dataSource erneut vom Server liest. http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#methods-refresh

Was Sie normalerweise tun wollen ein Raster zu zwingen, den Server erneut zu schlagen ist der zugrunde liegenden Datasource die read() -Methode (http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#methods-read) zu verwenden, das heißt:

$("#lstCategory").data("kendoGrid").dataSource.read(); 

Aber dies traf nur die server WENN die dataSource an einen entfernten Lese-Endpunkt gebunden ist, liest sie sonst einfach das lokale Array ... Die Daten Ihrer dataSource kommen von der mysteriösen Variablen namens "info", die wahrscheinlich ein bereits abgeholtes Array ist, ja ?

In diesem Fall müssten Sie zuerst das Info-Array erzwingen (indem Sie alles tun, was Sie tun, um es das erste Mal wieder zu füllen) DANN aktualisieren Sie die DataSource des Gitters mit den neuen Daten, DANN binden Sie das Gitter erneut.

Etwas wie folgt aus:

// Do Post or whatever... 
var grid = $("#lstCategory").getKendoGrid(); 
info = refeshInfoFromServer(); 
grid.dataSource.data(info); 
//grid.refresh(); // NOTE: not necessary as .data(info) will automatically do rebind to the grid it belongs to.automatically do this. 

Arbeiten Demo mit gefälschten Daten: http://dojo.telerik.com/@Stephen/aGAQo

+0

Ich versuche als deine Antwort, aber ich bekomme ein Problem, ich poste es in meiner Frage, können Sie es bitte überprüfen? –

+0

Ich bekomme es Arbeit, ich posten Antwort basierend auf meinen eigenen Daten –