Gibt es eine Möglichkeit, eine einzelne Kendo-Rasterzeile zu aktualisieren, ohne die gesamte Datenquelle zu aktualisieren oder jQuery zu verwenden, um den Wert für jede Zelle festzulegen?Aktualisieren einer einzelnen Kendo-Rasterzeile
Antwort
Wie definieren Sie die Zeile, die Sie aktualisieren möchten? Ich gehe davon aus, dass dies die Zeile ist, die Sie ausgewählt haben, und der Name der aktualisierten Spalte lautet symbol
.
// Get a reference to the grid
var grid = $("#my_grid").data("kendoGrid");
// Access the row that is selected
var select = grid.select();
// and now the data
var data = grid.dataItem(select);
// update the column `symbol` and set its value to `HPQ`
data.set("symbol", "HPQ");
Denken Sie daran, dass der Inhalt des DataSource
ist ein observable
Objekt, was bedeutet, dass Sie es set
mit aktualisieren und die Änderung sollte magisch im grid
widerspiegeln.
data.set
aktualisiert tatsächlich das gesamte Grid und sendet in einigen Fällen ein databound
Ereignis. Dies ist sehr langsam und unnötig. Außerdem werden alle erweiterten Detailvorlagen ausgeblendet, was nicht ideal ist.
Ich würde Ihnen empfehlen, diese Funktion zu verwenden, die ich schrieb, um eine einzelne Zeile in einem Kendo-Gitter zu aktualisieren.
// Updates a single row in a kendo grid without firing a databound event.
// This is needed since otherwise the entire grid will be redrawn.
function kendoFastRedrawRow(grid, row) {
var dataItem = grid.dataItem(row);
var rowChildren = $(row).children('td[role="gridcell"]');
for (var i = 0; i < grid.columns.length; i++) {
var column = grid.columns[i];
var template = column.template;
var cell = rowChildren.eq(i);
if (template !== undefined) {
var kendoTemplate = kendo.template(template);
// Render using template
cell.html(kendoTemplate(dataItem));
} else {
var fieldValue = dataItem[column.field];
var format = column.format;
var values = column.values;
if (values !== undefined && values != null) {
// use the text value mappings (for enums)
for (var j = 0; j < values.length; j++) {
var value = values[j];
if (value.value == fieldValue) {
cell.html(value.text);
break;
}
}
} else if (format !== undefined) {
// use the format
cell.html(kendo.format(format, fieldValue));
} else {
// Just dump the plain old value
cell.html(fieldValue);
}
}
}
}
Beispiel:
// Get a reference to the grid
var grid = $("#my_grid").data("kendoGrid");
// Access the row that is selected
var select = grid.select();
// and now the data
var data = grid.dataItem(select);
// Update any values that you want to
data.symbol = newValue;
data.symbol2 = newValue2;
...
// Redraw only the single row in question which needs updating
kendoFastRedrawRow(grid, select);
// Then if you want to call your own databound event to do any funky post processing:
myDataBoundEvent.apply(grid);
Was passiert, wenn Sie nicht auf dem Gitter selbst bearbeiten, sondern in einem Popup-Fenster. Wie ermitteln Sie die Zeile, die bearbeitet wird? – Scott
Danke! Das hat meinen Rücken gerettet !!! –
Ich bekomme myDataBoundEvent ist eine Funktionsvariable im obigen Code-Snippet. Aber welcher Code geht eigentlich in diese Funktion? Gibt es ein Live-Beispiel, auf das ich schauen kann? Ich habe den Code oben ohne den apply-Aufruf am Ende, nachdem ich den Aufruf der kendoFastRedrawRow-Methode aufgerufen habe, und sehe ein sich drehendes Rad, was darauf hindeutet, dass der Browser immer noch auf etwas wartet. Irgendwelche Zeiger? – Sudhir
fand ich einen Weg, um das Gitter und Datasource-Show im Netz zu aktualisieren, ohne alle Raster zu aktualisieren. Zum Beispiel haben Sie eine ausgewählte Zeile und Sie möchten den Wert der Spalte "name" ändern.
//the grid
var grid = $('#myGrid').data('kendoGrid');
// Access the row that is selected
var row = grid.select();
//gets the dataItem
var dataItem = grid.dataItem(row);
//sets the dataItem
dataItem.name = 'Joe';
//generate a new row html
var rowHtml = grid.rowTemplate(dataItem);
//replace your old row html with the updated one
row.replaceWith(rowHtml);
- 1. Aktualisieren Sie alle Zeilen einer einzelnen Spalte
- 2. Aktualisieren einer einzelnen Datenbankspalte in ASP.NET 4
- 3. Aktualisieren einer einzelnen Datei in einem komprimierten tar
- 4. Aktualisieren eines Atoms mit einem einzelnen Wert
- 5. Ausführen einer einzelnen Testmethode
- 6. Tracing einer einzelnen Ausgabe
- 7. Summenwerte einer einzelnen Zeile?
- 8. Neustart einer Aktivität auf einer einzelnen Registerkarte in einer TabActivity?
- 9. Wie in einzelnen Wert innerhalb spezifischem Array-Elements aktualisieren redux
- 10. Steuertabellenansichten innerhalb einer einzelnen Sammlungsansichtszelle
- 11. Thread Sicherheit einer einzelnen Variablen
- 12. Zeilenabstand für UILabel mit einer einzelnen Textzeile
- 13. Abrufen einer einzelnen Spalte aus einer Entität
- 14. ReactJS Aktualisieren eines einzelnen Objekts in einem Statusarray
- 15. Verwenden Sie Entity Framework zum Aktualisieren der Spaltenlänge und der Daten bei einer einzelnen Migration.
- 16. yii2: Aktualisieren Sie Werte in zwei Tabellen mit einer einzelnen Controller-Aktion?
- 17. C# - Aktualisieren eines Unterelements in einer Listenansicht
- 18. Aktualisieren einer SQL-Datenbankverbindung
- 19. Aktualisieren/Erstellen einer JList
- 20. Aktualisieren einer UICollectionview
- 21. Aktualisieren einer Safari-Erweiterung?
- 22. Aktualisieren einer Objekteigenschaft JavaScript
- 23. SQL-Abfrage einen einzelnen Datensatz aus einer mehr Datensätze von einer einzelnen Spalte
- 24. Eine SQL-Abfrage zur Anzeige der Anzahl unterschiedlicher Werte einer einzelnen Spalte in einer einzelnen Zeile
- 25. Konvertieren mehrerer Zeilen in einer einzelnen Spalte in einen einzelnen Datensatz in einer Zeile Informatica
- 26. Aktualisieren eines einzelnen Elements in einer Ansicht statt einer Liste von Elementen in der Ansicht in einem Listenobjekt mit angularJS
- 27. UPDATE alle Zeilen einer einzelnen Spalte mit LOAD DATA INFILE
- 28. Mehrere Textzeilen zu einer einzelnen Karte
- 29. "git format-patch" entspricht einer einzelnen Datei?
- 30. Mehrere Anbieter in einer einzelnen vagabundierenden Datei?
Was sollten wir tun, wenn es sich um eine benutzerdefinierte Vorlage in einer Zelle handelt, die nicht editierbar ist und diese Vorlage eine Funktion aufruft. Der Aufruf von set für das Datenelement scheint die Vorlage nicht neu zu zeichnen. – jonperl
@jonperl Ich schlage vor, Sie bitten, es als eine andere Frage zu stellen, um sicherzustellen, dass andere als ich es sehen und die Möglichkeit haben, es zu beantworten. Jedenfalls habe ich es mit Vorlagen versucht und es hat funktioniert. Also, posten Sie bitte einen Code, der zeigt, was Sie versucht haben und was nicht funktioniert. – OnaBai
HINWEIS: 'kendoDataGrid' heißt jetzt 'kendoGrid' (oder war es schon immer) –