繁体   English   中英

Handsontable Select2下拉选项更改为下一行

[英]Handsontable Select2 Dropdown Options Change For Next Row

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

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状态1”更改为1(状态的ID而不是名称)。

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

在此处输入图片说明

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

开发人员的评论位于https://github.com/trebuchetty/Handsontable-select2-editor/issues/15#issuecomment-144553584

我不确定如何解决这一问题。 Handsontable使每个列保持一个实例活动。 您可能需要重写此行为,我认为这是可能的,但与此相关的性能下降。 在打开编辑器之前,您可能需要验证另一列的值,以便可以用正确的列表替换选择列表。

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

由于您使用的是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;
            }
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM