Столбец динамического источника Jexcel в зависимости от выбранной ячейки

Я работаю с jexcel и замечаю, что функция фильтрации раскрывающегося списка или автозаполнения не позволяет вам перейти к исходным данным, объявленным ранее. Я знаю, что могу настроить всю необходимую мне информацию в источнике с самого начала, но у меня слишком большой источник, и я хотел бы сбросить источник с помощью ajax в зависимости от предыдущей ячейки значения, чтобы избежать загрузки огромной информации в javascript, которая снизит скорость работы пользователя.

Я не нашел никакой информации о сбросе источника, не затрагивая также остальные ячейки из столбца. Таким образом, они не будут иметь общий источник, поскольку значение colud ячейки предыдущего столбца будет другим.

Это пример кода фильтрации, который предоставляет документацию https://bossanova.uk/jexcel/v4/examples/dropdown-and-autocomplete:

<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>

Так, например, я представляю себе следующую идеальную ситуацию: когда запускается раскрывающийся список или автозаполнение из ячейки A2 (открывается или записывается), он проверяет выбранное значение из ячейки A1 и устанавливает новый источник данных с помощью вызова ajax, но, очевидно, может быть разными в каждой ячейке из столбца 2, поскольку значения из столбца 1 могут быть разными.

Надеюсь, ты знаешь ответ.

0 ответов

Другие вопросы по тегам