使用数组作为带有handsontable的列

Posted

技术标签:

【中文标题】使用数组作为带有handsontable的列【英文标题】:Using arrays as columns with handsontable 【发布时间】:2018-10-17 11:39:51 【问题描述】:

我正在使用handsontable 来显示应用程序的数据。我想将数组用作 columns,我似乎无法通过文档弄清楚。我想最好的方法是使用我的数组的数组,但我无法将它们拼凑在一起。

到目前为止的代码如下:

var data = [
  ["Sale Month", "Usage", "Address", "Tax Assessment", "Loan Amount", "Initial Equity", "Lien Start Date", "Lien Term", "Loan Type", "Square Feet", "Year Build", "Acres"
      , "Beds", "Baths", "Lotsort"]
];

var container = document.getElementById('listview');
var hot = new Handsontable(container, 
  data: data,
  rowHeaders: true,
  colHeaders: true
);

每个列标题都有一组数组。例如,saleMonth 数组看起来像 ['01/18, 03/16, 01/12'] 等等。我想将每个数组的索引用于相应列中的条目。

这是当前的输出:

Screenshot

如果我可以更清楚,请告诉我。

谢谢!

编辑:添加了JSFiddle

【问题讨论】:

你能在fiddle 中重现这个吗? @Taki 是的,已将其添加到我的原始帖子中。 【参考方案1】:

我稍微更改了您的数据结构:将 data 更改为标题列表 (columns) 并将您的值数组移动到映射 (values) 中,其中键是列的名称和该值是原始数组

通过这种方式,您可以详细说明您的数据,从而以合适的格式创建一个 rows 数组

var saleMonth = ['01/18', '03/20']
var usageArray = ['Residential', 'Commercial']

var values = 
  'Sale Month': saleMonth,
  'Usage': usageArray


var columns = 
  ["Sale Month", "Usage", "Address", "Tax Assessment", "Loan Amount", "Initial Equity", "Lien Start Date", "Lien Term", "Loan Type", "Square Feet", "Year Build", "Acres"      , "Beds", "Baths", "Lotsort"]

;

var rows=[];
var numOfRow
for ( numOfRow = 0; numOfRow < saleMonth.length; numOfRow++ ) 
    rows.push(columns.map((e) => 
    if (e in values) return values[e][numOfRow]
    return e;
    ));


var container = document.getElementById('listview');
var hot = new Handsontable(container, 
  data: rows,
  rowHeaders: true,
  colHeaders: true
);

您还可以在Hansontable 配置对象中设置colHeaders: columns 以获取列标题而不是字母

【讨论】:

以上是关于使用数组作为带有handsontable的列的主要内容,如果未能解决你的问题,请参考以下文章

我无法使用带有 jquery 的 Handsontable 加载数据

无论如何用 Handsontable 过滤行?

Handsontable:如何将数据发布为关联数组

Handsontable 给出了意外的列数

刷新handsontable

在 Handsontable 单元格中加载数组