如何在Handsontable中为复选框添加默认值?

时间:2013-11-14 20:38:55

标签: jquery handsontable

如何将默认值设置为仅检查Handson表中的新行?

在以下链接中,如何将列“C”checked = true设置为仅适用于新行。

有什么想法吗?

http://handsontable.com/demo/renderers.html

$(document).ready(function () {

  var data = [
    {id: 1, name: "Ted", isActive: true, color: "orange", date: "2008-01-01"},
    {id: 2, name: "John", isActive: false, color: "black", date: null},
    {id: 3, name: "Al", isActive: true, color: "red", date: null},
    {id: 4, name: "Ben", isActive: false, color: "blue", date: null}
  ];

  var yellowRenderer = function (instance, td, row, col, prop, value, cellProperties) {
    Handsontable.TextCell.renderer.apply(this, arguments);
    $(td).css({
      background: 'yellow'
    });
  };

  var greenRenderer = function (instance, td, row, col, prop, value, cellProperties) {
    Handsontable.TextCell.renderer.apply(this, arguments);
    $(td).css({
      background: 'green'
    });
  };

  var $container = $("#example1");
  $container.handsontable({
    data: data,
    startRows: 5,
    colHeaders: true,
    minSpareRows: 1,
    columns: [
      {data: "id", type: 'text'},
      //'text' is default, you don't actually have to declare it
      {data: "name", type: {renderer: yellowRenderer}},
      {data: "isActive", type: 'checkbox'},
      {data: "date", type: 'date'},
      {data: "color",
        type: 'autocomplete',
        source: ["yellow", "red", "orange", "green", "blue", "gray", "black", "white"]
      }
    ],
    cells: function (row, col, prop) {
      if (row === 0 && col === 0) {
        this.renderer = greenRenderer;
      }
    }
  });

  function bindDumpButton() {
      $('body').on('click', 'button[name=dump]', function () {
        var dump = $(this).data('dump');
        var $container = $(dump);
        console.log('data of ' + dump, $container.handsontable('getData'));
      });
    }
  bindDumpButton();

});

1 个答案:

答案 0 :(得分:1)

我能够弄清楚自己

我们可以通过向afterCreateRow回调添加一些代码来为新创建的行设置默认列值。我确实将以下代码添加到afterCreateRow回调似乎工作正常。

afterCreateRow: function(index) {
                        if (handsontable != undefined) {
                            var data = $("#hsTable").data('handsontable').getData();
                            data[index - 1].(dataSchemaField)= true;
                        }
                    }