手动表:动态添加下拉值

Handsontable: Adding drop down values dynamically

本文关键字:添加 动态      更新时间:2023-09-26

我使用以下代码向第一行的所有列添加一个下拉列表。

var hot = new Handsontable(container,
    {
        data: results,
        colWidths: [200, 200, 200, 200, 200, 200, 200, 200, 200],
        colHeaders: false,
        contextMenu: true,
        cells : function (row, col, prop) {
            if (row === 0) {
              this.type = 'dropdown';
              var val = this.instance.getValue();
              if(typeof val != 'undefined') {
                this.source = [val, 'Code', 'Type', 'Color'];
              }
            }
        }
    });

在我的单元格函数中,我正在尝试将当前单元格值添加到下拉列表中(默认值为代码、类型和颜色)。但是,如果用户决定在单元格中输入"重量",那么我希望下拉列表包含("重量","代码","类型"和"颜色")。

上面的函数确实这样做了,但不正确...每次调用函数时,添加的值都会被下一个替换。

然后,我尝试创建一个列表,我将val值添加到该列表并将source设置为该列表。

但我不禁觉得有更好的方法可以做到这一点。

任何指示将不胜感激!

我明白了,从您的评论中可以看出,您似乎想将值附加到源列表中。因此,我建议如下:

var hot = new Handsontable(container,
    {
    data: results,
    colWidths: [200, 200, 200, 200, 200, 200, 200, 200, 200],
    colHeaders: false,
    contextMenu: true,
    cells : function (row, col, prop) {
        if (row === 0) {
          this.type = 'dropdown';
          var val = this.instance.getValue();
          if(typeof val != 'undefined') {
            this.source.push(val); // to add to the beginning do this.source.unshift(val) instead
          }
        }
    }
});

这样做的作用是将当前值追加到源列表中。这样,下次输入值时,它将被追加而不是替换。

<select ng-repeat="myModel">
 <option value=1>First Selection</option>
 <option value=2>Second Selection</option>
</select>