Javascript Jexcel动态源列,取决于所选单元格

Javascript Jexcel动态源列,取决于所选单元格,javascript,spreadsheet,jexceljs,Javascript,Spreadsheet,Jexceljs,我正在与Jetcel合作,我注意到关于过滤下拉列表或自动完成的功能不允许您更改到以前声明的源数据。我知道我可以从一开始就在源代码中设置我需要的所有信息,但我有一个太大的源代码,我希望根据前面的值单元格使用ajax重置源代码,以避免在javascript中加载大量信息,从而降低用户工作的速度 我没有找到任何关于在不影响列中其余单元格的情况下重置源的信息。因此,它们不会共享同一个源,因为前一列单元格colud的值可能不同 以下是提供文档的有关筛选的示例代码: 变量数据2=[ [3,‘奶酪’,真的]

我正在与Jetcel合作,我注意到关于过滤下拉列表或自动完成的功能不允许您更改到以前声明的源数据。我知道我可以从一开始就在源代码中设置我需要的所有信息,但我有一个太大的源代码,我希望根据前面的值单元格使用ajax重置源代码,以避免在javascript中加载大量信息,从而降低用户工作的速度

我没有找到任何关于在不影响列中其余单元格的情况下重置源的信息。因此,它们不会共享同一个源,因为前一列单元格colud的值可能不同

以下是提供文档的有关筛选的示例代码:


变量数据2=[
[3,‘奶酪’,真的],
[1,‘苹果’,没错],
[2,‘胡萝卜’,正确],
[1,‘橙子’,假],
];
dropdownFilter=函数(实例、单元格、c、r、源){
var value=instance.jexcel.getValueFromCoords(c-1,r);
如果(值==1){
返回[‘苹果’、‘香蕉’、‘橙子’];
}else if(值==2){
返回[‘胡萝卜’];
}否则{
返回源;
}
}
jexcel(document.getElementById('spreadsheet2'){
数据:数据2,
栏目:[
{类型:'dropdown',标题:'Category',宽度:'300',来源:[{'id':'1','name':'Fruits'},{'id':'2','name':'Legumes'},{'id':'3','name':'General Food'},
{类型:'dropdown',标题:'Food',宽度:'200',来源:['Apples','panana','Carrots','Oranges','Cheese',过滤器:dropdownpilter},
{键入:'checkbox',标题:'Buy',宽度:'100'},
],
onchange:函数(实例、单元格、c、r、值){
如果(c==0){
var columnName=jexcel.getColumnNameFromId([c+1,r]);
setValue(columnName“”);
}
}
});
例如,我想象下一个理想情况:当单元格A2的下拉或自动完成被触发(打开或写入)时它将检查单元格A1中选定的值,并通过ajax调用建立新的数据源,但很明显,每个单元格与第2列中的值可能不同,因为第1列中的值可能不同

希望你知道答案

<html>
<script src="https://bossanova.uk/jexcel/v4/jexcel.js"></script>
<link rel="stylesheet" href="https://bossanova.uk/jexcel/v4/jexcel.css" type="text/css" />
 
<script src="https://bossanova.uk/jsuites/v3/jsuites.js"></script>
<link rel="stylesheet" href="https://bossanova.uk/jsuites/v3/jsuites.css" type="text/css" />
 
<div id="spreadsheet2"></div>
 
<script>
var data2 = [
    [3, 'Cheese', true],
    [1, 'Apples', true],
    [2, 'Carrots', true],
    [1, 'Oranges', false],
];
 
dropdownFilter = function(instance, cell, c, r, source) {
    var value = instance.jexcel.getValueFromCoords(c - 1, r);
    if (value == 1) {
        return ['Apples','Bananas','Oranges'];
    } else if (value == 2) {
        return ['Carrots'];
    } else {
        return source;
    }
}
 
jexcel(document.getElementById('spreadsheet2'), {
    data:data2,
    columns: [
        { type:'dropdown', title:'Category', width:'300', source:[ {'id':'1', 'name':'Fruits'}, {'id':'2', 'name':'Legumes'}, {'id':'3', 'name':'General Food'} ] },
        { type:'dropdown', title:'Food', width:'200', source:['Apples','Bananas','Carrots','Oranges','Cheese'], filter:dropdownFilter },
        { type: 'checkbox', title:'Buy', width:'100' },
    ],
    onchange:function(instance, cell, c, r, value) {
        if (c == 0) {
            var columnName = jexcel.getColumnNameFromId([c + 1, r]);
            instance.jexcel.setValue(columnName, '');
        }
    }
});
<script>
</html>