JavaScript не работает с пользовательским рендерингом ячеек с AJAX в Handsontable

В моей таблице (Handsontable) у меня есть четыре столбца Машины, , В а также С.
Данные для Машины а также столбцы загружаются из базы данных MySQL. (лайк PHP Demo).

Данные столбца В заполняется из базы данных MySQL через AJAX в зависимости от значения Машины. Код выглядит следующим образом:

{type: { renderer : function (instance, TD, row, col, prop, value, cellProperties) {
Handsontable.TextCell.renderer.apply(this, arguments);
var cr,prc;
cr = instance.getDataAtCell(row, 0);
prc = instance.getDataAtCell(row, 1);
$.ajax({
url: "php/act-go-t.php",
data: {cars: cr, price: prc},
dataType: 'json',
type: 'POST',
success: function (res) {
if (res.result[0].tax === null) {
TD.innerHTML = '0.000';
}
else {
TD.innerHTML = res.result[0].tax;
}
},
error: function () {
TD.innerHTML = '0.000';
}
});
}}}

Столбец C является SUM из а также В и код:

{type : { renderer : function (instance, TD, row, col, prop, value, cellProperties) {
Handsontable.TextCell.renderer.apply(this, arguments);
var a,b;
a = instance.getDataAtCell(row, 1);
b = instance.getDataAtCell(row, 2);
TD.innerHTML = +a + +b;
}}}

Проблема в том, что значение загружается в В но сложение не работает. Если я установлю тип В столбец в числовой ({type: numeric}) кроме AJAX, дополнение работает нормально.

Результат с AJAX:

+----------+------+-------+--------------+
| Cars     |   A  |    B  |            C |
+----------+------+-------+--------------+
| Nissan   |   20 |    10 |          20  |
| Honda    |    5 |     6 |           5  |
+----------+------+-------+--------------+

Результат без AJAX:

+----------+------+-------+-------------+
| Cars     |   A  |    B  |           C |
+----------+------+-------+-------------+
| Nissan   |   20 |    10 |         30  |
| Honda    |    5 |     6 |          11 |    -
+----------+------+-------+-------------+

Кто-нибудь может сказать мне, если я что-то упустил?

0

Решение

В твоем случае TD.innerHTML = res.result[0].tax; предназначен только для отображения данных, однако он не вставляет данные в карту данных.

Вы можете попытаться установить id для этой ячейки и получить значение этого с помощью jquery и суммируя их. Так что коды будут выглядеть примерно так:

{type: { renderer : function (instance, TD, row, col, prop, value, cellProperties) {

var cr,prc;
cr = instance.getDataAtCell(row, 0);
prc = instance.getDataAtCell(row, 1);
$.ajax({
url: "php/act-go-t.php",
data: {cars: cr, price: prc},
dataType: 'json',
type: 'POST',
success: function (res) {
if (res.result[0].tax === null) {
TD.innerHTML = '0.000';
}
else {
TD.innerHTML = res.result[0].tax;
}
},
error: function () {
TD.innerHTML = '0.000';
}
});
arguments[5] = TD.innerHTML;
TD.id = row+'_'+col;
Handsontable.TextCell.renderer.apply(this, arguments);

}}}

А также

{type : { renderer : function (instance, TD, row, col, prop, value, cellProperties) {
Handsontable.TextCell.renderer.apply(this, arguments);
var a,b;
a = $('#'+row+'_1').text();
b = $('#'+row+'_2').text();
TD.innerHTML = +a + +b;
}}}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]