Как создать динамические столбцы для Handsontable?

Я работаю с Handsontable над созданием веб-сетки, которую можно копировать/вставлять между Интернетом и Excel, я пробовал код ниже, и он отлично работает:

  var first = true;
  var exampleGrid = $("#exampleGrid");
  exampleGrid.handsontable({
      rowHeaders: true,
      colHeaders: true,
      stretchH: 'all',
      minSpareCols: 0,
      minSpareRows: 0,
      height: 600,
      columns: [
      { data: "Id", title: "ID", type: "text" }, //'text' is default, you don't actually have to declare it
      { data: "Name", title: "Name", type: "text" },
      { data: "DisplayColor",
      title: "Display Color",
      type: 'autocomplete',
      source: ["yellow", "red", "orange", "green", "blue", "gray", "black", "white"]
      },
      { data: "Description", title: "Description", type: 'text' },
      { data: "IsDeleted", title: "Is Deleted", type: 'checkbox' }
      ],
      colWidths: [400, 100, 60, 100, 50, 40, 40, 60], //can also be a number or a function
      contextMenu: false,
  });

Теперь мне нужно создать веб-сетку с динамическими столбцами, я попытался заменить список столбцов функцией ниже, но это не работает:

    columns:
        function () {
            var cols = [];
            for (var i = 0; i < 1; i++) {
                var col = new Object();

                col.data = "Name";
                col.title = "Name" + i.toString();
                col.type = "text";
                cols[i] = col;
            }
            return cols;
        },

Можно ли создавать динамические столбцы в сетке Handsontable? а как это сделать?

Я новичок в JavaScript, поэтому, пожалуйста, сообщите мне, если я допустил какую-либо ошибку, спасибо!


person xinfli    schedule 24.04.2013    source источник


Ответы (1)


Решил эту проблему самостоятельно, функция не может использоваться в определении столбца напрямую, но разрешена переменная, поэтому код ниже работает:

var dynamicColumns = [];
for (var i = 0; i < 366; i++) {
    var col = new Object();
    col.data = "Name";
    col.title = "Name " + i.toString();
    col.type = "text";
    dynamicColumns.push(col);
}

skillGrid.handsontable({
    // ...
    columns: dynamicColumns,
    // ...
person xinfli    schedule 25.04.2013
comment
@GôTô, как владелец вопроса, вы должны выбрать правильный ответ (в данном случае есть только один, и он правильный). А не наоборот. В противном случае каждый мог бы выбрать свой ответ как правильный :). - person Helmut Granda; 23.06.2016
comment
@HelmutGranda Этот ответ предоставлен человеком, который задал вопрос........ - person GôTô; 23.06.2016