[英]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'}];
解决问题的步骤:
请注意,值已从“ 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.