Как синхронизировать DataSource сетки kendo ui на роде?
-
21-12-2019 - |
Вопрос
Хорошо, поэтому у нас есть какой-то унаследованный код, который использует сеты kendo ui.
После сортировки сетки мы должны иметь возможность прочитать элемент данных данных, который соответствует каждой строке, итерацией через список jQuery Selection 'Tr', а затем выберите элемент DataSource на основе индекса самой строки.
Проблема существует в том, что источник данных не сортируется, когда сортирует сетку, поэтому вы не можете просто получить индекс каждой строки и посмотреть подходящий элемент соответствующего данных, как это ...
$('td:nth-child(' + colIndex + ')', $('tbody', grid.element).eq(0)).each(
function (iIndex) {
var td = $(this);
var tr = td.parent();
var data = grid.dataSource.data()[iIndex];
if (data.Status.toLowerCase() !== 'c') {
totalBalanceDue = (totalBalanceDue - data.Payment) > 0 ? (totalBalanceDue - data.Payment) : 0;
};
td.html('$' + totalBalanceDue.formatMoney(2, '.', ','));
}
);
. Решение 2
Похоже, я должен ответить на этот вопрос сам.
Я нашел, пропитав документацию и в Интернете, что то, как я приближаюсь к этому, не обязательно точен.Вместо того, чтобы пытаться отсортировать массив, чтобы соответствовать строкам GRIDView, я могу использовать атрибут UID Data of Row, чтобы получить соответствующий PatteriTem из массива DataSource.data (), используя функцию DataSource.getbyuid (),
Это работает так же, как мне нужно.
$('td:nth-child(' + colIndex + ')', $('tbody', grid.element).eq(0)).each(
function (iIndex) {
var td = $(this);
var tr = td.parent();
//gets the corresponding dataitem for the selected row.
var data = grid.dataSource.getByUid(tr.data("uid"));
if (data.Status.toLowerCase() !== 'c') {
totalBalanceDue = (totalBalanceDue - data.Payment) > 0 ? (totalBalanceDue - data.Payment) : 0;
};
td.html('$' + totalBalanceDue.formatMoney(2, '.', ','));
}
);
. Другие советы
Это все не нужно.Все, что вам нужно использовать, это Просмотр метода ()источника данных.