2017-02-13 5 views
0

Ich versuche Statusfeld der Zeile mit einer benutzerdefinierten Befehlsschaltfläche festlegen. Gitterdatenquelle Transport wird wie folgt definiert:Kendo Grid saveChanges() funktioniert nicht

transport: { 
    read: { 
    url: "/agent/AgentList", 
    type: "POST", 
    dataType: "json", 
    data: addAntiForgeryToken 
    }, 
    update: { 
    url: "/agent/UpdateAgent", 
    type: "POST", 
    dataType: "json", 
    data: addAntiForgeryToken 
    } 
}, 

Benutzerdefinierte-Befehl wird wie folgt definiert:

{ 
    command: [ 
    { 
     name: "accept", 
     visible: function(dataItem) { 
     return dataItem.StatusId === 1; 
     }, 
     text: "@T("Ralfeus.Agent.Accept")", 
     click: function(e) {setOfferResponse(this, e, 2);} 
    } 
    ] 
} 

Die Funktion, das Feld tatsächlich Einstellung wird wie folgt definiert:

function setOfferResponse(grid, sender, response) { 
    sender.preventDefault(); 
    var dataItem = grid.dataItem($(sender.currentTarget).closest("tr")); 
    dataItem.StatusId = response; 
    grid.editRow($(sender.currentTarget).closest("tr")); 
    grid.saveChanges(); 
} 

I erwartet saveChanges() ruft auf, um die Aktualisierungsmethode des Datenquellentransports auszulösen. Es verursacht jedoch weder Anfragen an den Server noch meldet es Fehler.

Ich habe auch versucht, grid.saveChanges() mit grid.dataSource.sync() zu ersetzen (übrigens - was ist der Unterschied?) Wie vorgeschlagen wurde here aber das Ergebnis war das gleiche: keine HTTP-Anfrage, keine Fehler.

+0

@ -> können Sie einen Fehler auf Konsole sehen? –

+0

Nein. Es wurden keine Fehler gemeldet. – Ralfeus

Antwort

1

Ok, den Grund gefunden. Das programmatische Ändern von dataItem-Feldern macht sie nicht schmutzig. Also musste ich es schmutzig machen:

dataItem.dirty = true; 
grid.saveChanges(); 

Dann arbeitete er