Handsontable: как изменить значение ячейки в функции рендеринга
У меня есть похожий код:
<script>
$(document).ready(function () {
var data = @Html.Raw(ViewBag.Data);
function sumPreviousValues(instance, td, row, col, prop, value, cellProperties) {
Handsontable.renderers.TextRenderer.apply(this, arguments);
td.val = 'SUM SEVERAL PREVIOUS CELLS';
}
container = document.getElementById('example1'),
settings1 = {
data: data,
colHeaders: @Html.Raw(ViewBag.TableHeader),
cells: function (row, col, prop) {
var cellProperties = {};
if (col == 16) {
cellProperties.renderer = sumPreviousValues;
}
return cellProperties;
}
},
hot = new Handsontable(container,settings1);
hot.render();
Ключ должен изменить функцию sumPreviousValues()
Но я не знаю, как получить доступ к td
значение? и если возможно получить доступ к значению других ячеек, как td[index]
, Любая идея? Я не нашел вариантов в документации.
Спасибо
3 ответа
Я думаю, что понимаю, что вы хотите сделать, и вот простое решение:
Из пользовательского рендера вы можете вызвать:
instance.getDataAtCell(row, col);
Это даст вам данные (значение) ячейки в row,col
, Надеюсь, это поможет:)
Кроме того, чтобы получить доступ к значению текущего тд, вы просто используете value
переменная:P Посмотрите на определение функции. Вы буквально передаете это и доступно для вас.
Вы можете сделать это с помощью jExcel, это не ручная работа, но может сделать работу. http://bossanova.uk/jexcel
data = [
['3D Systems ', 'DDD', 15.08, 15.1, 0.01, 0.07],
['3M', 'MMM', 178.34, 178.65, 0.49, 0.28],
['58.com', 'ADR WUBA', 30.01, 29.1, -0.76, -2.55],
['500.com', 'ADR WBAI', 13.48, 13.56, 0.1, 0.74],
];
// Create the spreadsheet based on data
$('#my').jexcel({
data:data,
colHeaders: ['Name', 'Symbol', 'Open', 'Close', '% Net', '% Change'],
colWidths: [ 300, 80, 100, 100, 100, 100 ],
});
// Live update of the settings
$('#my').jexcel('updateSettings', {
cells: function (cell, col, row) {
if (col == 4 || col == 5) {
// To access different cells. Where x = column, y = row starting on zero.
var cell = '#' + x + '-' + y;
cell = $('#my').find(cell);
val = $('#my').jexcel('getValue', $(cell));
}
}
});
Чтобы уточнить этот вопрос, вы можете проверить td
параметр передается в sumPreviousValues()
, Это помогло бы понять, что это такое, я бы предположил, что это HTML DOM-узел. Если это так, вы можете настроить его значение, используя td.innerHTML
Более подробную информацию об этом можно найти здесь: http://www.w3schools.com/jsref/prop_html_innerhtml.asp