Um dies zu erreichen, erzeuge ich normalerweise versteckte Felder mit den Daten des Gitters, bevor ich das Formular submittiere. Eine einfache Art und Weise für das tun:
$("#my-form").submit(function() {
var grid = $("#grid").data("kendoGrid"),
data = grid.dataSource.data(),
columns = grid.options.columns.map(function(item) { return item.field; }),
html = "";
for (var i = 0; i < data.length; i++) {
var fields = Object.keys(data[i]);
for (var n = 0; n < fields.length; n++) {
if (columns.indexOf(fields[n]) > -1) {
html+= "<input type='hidden' name='" + fields[n] + "[" + i + "]' value='" + data[i][fields[n]] + "' />";
}
}
}
$("#hidden-fields").empty().append(html);
});
Working Demo
Dies in einer Reihe von verdeckten Feldern innerhalb eines div führen (#hidden-fields
), die auch in der Form ist. Seine Namen werden so etwas wie dieses:
name="PropertyA[0]" value="valueOfA0"
name="PropertyB[0]" value="valueOfB0"
name="PropertyA[1]" value="valueOfA1"
name="PropertyB[1]" value="valueOfB1" and so on...
Dies passt problemlos eine ASP.Net MVC-Liste Parameter oder im Falle einer Liste in einem Ansichtsmodell, nur den Namen des Ansichtsmodell hinzufügen, bevor dem Eigenschaftsnamen, z.B. ViewModel.PropertyA[0]
. Für PHP wird es in einem Array z. $_POST["PropertyA"]
. Ich bin mir anderer API-Sprachen nicht sicher.
Irgendwelche Neuigkeiten dazu? – DontVoteMeDown