【问题标题】:Handsontable Select2 Dropdown Options Change For Next RowHandsontable Select2 下拉选项更改为下一行
【发布时间】:2016-03-18 12:25:53
【问题描述】:

请检查以下小提琴以获得有效的演示:

http://jsfiddle.net/jepod675/2/

我的数据如下:

var countries = [{id:'1',text:'Country 1'},{id:'2',text:'Country 2'}];

var states = [];

states[1] = [{id:'1',text:'C1 State 1'},{id:'2',text:'C1 State 2'}];
states[2] = [{id:'3',text:'C2 State 1'},{id:'4',text:'C2 State 2'}];

产生问题的步骤:

  1. 在第一行选择“国家 1”,在“州”列下选择“C1 州 1”
  2. 在下一行中选择“国家 2”。

请注意,值从 'C1 State 1' 更改为 1(状态的 id 而不是名称。

您还可以在第一行看到状态选项(参考屏幕截图)。

我猜 handsontable 每列维护一个选项实例。

开发者在https://github.com/trebuchetty/Handsontable-select2-editor/issues/15#issuecomment-144553584的评论

我不确定如何解决这个问题。 Handsontable 保持不变 每列的实例存活。您可能需要覆盖此行为, 我认为这是可能的,但会有性能损失 与此相关。您可能需要验证另一列的 打开编辑器之前的值,以便您可以替换 带有正确列表的选择列表。

我正在寻求有关如何解决此问题的帮助?

【问题讨论】:

    标签: jquery jquery-select2 handsontable


    【解决方案1】:

    由于您使用的是select2编辑器,编辑器有回调方法“onBeginEditing”

    $("#hot").handsontable({           
            onBeginEditing: function () {
                var activeEditor = instance.getActiveEditor();
                var selectedRow = activeEditor.cellProperties.row
                var selectedColumn = activeEditor.cellProperties.col;
                if ( selectedColumn == 3) {
                    var tester = instance.getDataAtCell(selectedRow, 14);
                    var filterlist = [];
                    var optionsList = activeEditor.options.data;
                    for (var index = 0; index < optionsList.length; index++) {
                        if (tester == optionsList[index].tester) {
                            filterlist.push(optionsList[index]);
                        }
                    }
                    activeEditor.options.data = filterlist;
                }
            });
    

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 2016-02-24
      • 2020-01-04
      • 2016-02-03
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多