Czy istnieje sposób na odświeżenie pojedynczego wiersza siatki Kendo bez odświeżania całego źródła danych lub użycia jQuery do ustawienia wartości dla każdej komórki?Odświeżanie pojedynczego wiersza siatki Kendo
Odpowiedz
Jak zdefiniować wiersz, który chcesz zaktualizować? Zakładam, że jest to wiersz, który wybrałeś, a nazwa aktualizowanej kolumny to 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");
Pamiętaj, że treść DataSource
jest obiektem observable
, co oznacza, że można go zaktualizować za pomocą set
i zmiany powinny znaleźć odzwierciedlenie magicznie w grid
.
data.set
odświeży całą sieć i wyśle w niektórych przypadkach zdarzenie databound
. Jest to bardzo powolne i niepotrzebne. Spowoduje to również zwinięcie dowolnych rozszerzonych szablonów szczegółów, które nie są idealne.
Polecam użyć tej funkcji, którą napisałem, aby zaktualizować pojedynczy wiersz w siatce kendo.
// 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);
}
}
}
}
Przykład:
// 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);
Co zrobić, jeśli nie robisz edycji samej siatki, ale zamiast tego w wyskakującym okienku. Jak określić, który wiersz jest edytowany? – Scott
Dziękujemy! To uratowało mnie z tyłu !!! –
Otrzymuję myDataBoundEvent jest zmienną funkcji w powyższym fragmencie kodu. Ale jaki kod faktycznie wchodzi w tę funkcję? Czy istnieje na żywo przykład tego, na co mogę spojrzeć? Obecnie mam kod powyżej bez wywoływania żądania po wywołaniu inwokacji metody kendoFastRedrawRow i widzę obracające się koło, sugerujące, że przeglądarka wciąż czeka na coś. Jakieś wskazówki? – Sudhir
znalazłem sposób, aby zaktualizować źródła danych siatki i show w sieci bez odświeżania całej sieci. Na przykład masz wybrany wiersz i chcesz zmienić wartość kolumny "nazwa".
//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. Zdarzenie zmiany wyboru wiersza siatki Kendo?
- 2. Pętla w szablonie siatki Kendo
- 3. Ustawianie szerokości siatki Kendo UI Popup (MVC)
- 4. Jak dodać kolumnę checkbox do siatki Kendo
- 5. Jak usunąć wszystkie wiersze z siatki Kendo
- 6. Jak zdobyć sortowanie siatki kendo ui?
- 7. Kendo UI - pagodowanie siatki (strona serwera)
- 8. Ukrywanie/wyświetlanie paska przewijania siatki Kendo
- 9. Zmień użycie siatki kendo DataSource JS
- 10. Sortowanie siatki Kendo w kolejności sortowania
- 11. Edytowanie wsadowe Kendo - wykonanie pojedynczego połączenia w celu zapisania
- 12. Pasek przewijania i odświeżanie wiersza w JavaScript
- 13. Wybieranie pojedynczego wiersza w MySQL
- 14. Interfejs użytkownika Kendo z domyślnymi wartościami ASP.NET MVC3 podczas dodawania wiersza do siatki
- 15. Zmiana tła pojedynczego wiersza gridview w Androidzie
- 16. MVC modelu wiązania nie działa na Kendo siatki
- 17. Jak zmienić domyślny operator filtra w kendo ui siatki MVC
- 18. Kendo UI: Podaj wartości podsumowania siatki w stopce
- 19. Usunięcie menu rozwijanego z menu filtru siatki Kendo
- 20. Jak mogę użyć zagnieżdżonego Json do wypełnienia siatki Kendo UI?
- 21. Dynamicznie dodawaj podpowiedzi do wierszy siatki kendo w kolumnie
- 22. Ustaw kolumnę siatki/szerokość wiersza/wysokość dynamicznie
- 23. Kendo UI Formatowanie walut
- 24. Kendo UI Grid alternatywa
- 25. Kendo ui datasource odświeżyć?
- 26. Kendo Grid odpowiednik onEditComplete
- 27. Odświeżanie DataTables
- 28. Kendo - zapisywanie filtrów siatki za pomocą kodu na stronie ma problemy tylko z kolumnami siatki filtru daty
- 29. Jak ustawić rozmiar kolumny/wiersza siatki bez definiowania każdej linii?
- 30. Jak zresetować wysokość wiersza siatki po użyciu splittera?
Co powinniśmy zrobić, jeśli jest to niestandardowy szablon w komórce, który nie jest edytowalny, a szablon wywołuje funkcję. Zestaw wywołań w elemencie danych nie wydaje się przerysowywać szablonu. – jonperl
@jonperl Proponuję zadać to jako inne pytanie, aby upewnić się, że inni niż ja to widzą i mają możliwość odpowiedzi. W każdym razie próbowałem go z szablonami i działało. Opublikuj kod, pokazujący, co próbujesz i pokazując, co się nie udaje. – OnaBai
UWAGA: 'kendoDataGrid' jest teraz nazywane "kendoGrid" (lub może zawsze było) –