来自列属性的Handsontable下拉源

时间:2016-11-18 01:27:56

标签: javascript handsontable

无法找到解决方案,所以也许有人会帮忙。

我有一组类似的数据:

    [
        {
        id: 1,
        name: 'Nissan',
        year: 2012,
        chassis_color: ['yellow', 'red', 'orange', 'green', 'blue', 'gray', 'black', 'white']
      },
      {
        id: 2,
        name: 'Chrysler',
        year: 2014,
        chassis_color: ['red', 'orange', 'blue', 'gray', 'black', 'white']
      },
      {
        id: 3,
        name: 'Volvo',
        year: 2015,
        chassis_color: ['white', 'orange', 'blue', 'red']
      }
    ]

所以我无法通过手动输入数组值来弄清楚如何从它的值中填充chassis_color列下拉列表。

文档中的示例:

columns: [
      {
        type: 'dropdown',
        source: ['yellow', 'red', 'orange', 'green', 'blue', 'gray', 'black', 'white']
      }
]

但我需要这个:

columns: [
          {
            type: 'dropdown',
            source: 'chassis_color' // it should understand that this property is an array and populate source with it
          }
]

以同样的方式工作。

我需要这个,因为我有非常大的数据集,手动设置很难。

感谢。

1 个答案:

答案 0 :(得分:2)

Handsontable只是尝试将数组显示为数据。

您可以使用cell属性更改源值:

cells: function(row, col, prop) {
    var cellProperties = this;

    if (col == 0) {
        cellProperties.type = 'dropdown';
        var val = data[row].chassis_color_source;

        if (typeof val != 'undefined') {
            cellProperties.source = val;
        }
    }

    return cellProperties;
}

JSFiddle中的完整示例。