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

Другие вопросы по тегам