使用AJAX中的值自动完成

时间:2019-10-24 15:32:36

标签: tabulator

我有一个使用制表符的表。

一切正常,但是我正在尝试让Ajax自动完成工作

我正在尝试的是:

var customerNumbers = [];

var table = new Tabulator("#edi-table",
    ajaxURL: baseUrl + '/PaginatedEndPoint',
    pagination: "remote",
    paginationSize: 30,
    paginationSizeSelector: [30, 60, 100, 200],
    ajaxSorting: true,
    ajaxFiltering: true,
    selectable: true,
    cellEdited: function (cell) {
        cell.getElement().style.backgroundColor = "#32CD32";
    },
    dataLoading: function () {
        customerNumbers = ["11", "12", "13"];
    },
    columns: [
        {
            title: "CustomerNumber", field: "CustomerNumber", headerFilter: "input", editor: "autocomplete", editorParams: {
                searchFunc: function (term, values) {
                    var matches = [];

                    values.forEach(function (item) {
                        if (item.value === term) {
                            matches.push(item);
                        }
                    });
                    console.log(matches);
                    return matches;
                },
                listItemFormatter: function (value, title) {
                    return "Mr " + title;
                },
                values: customerNumbers
            }
        }
    ]

但是,这对我而言并没有显示任何预测值预测,似乎在“ dataLoading”或任何其他Callback(我尝试过多次)被调用之前构建了自动完成功能。

我试图用{Title:“ Mr + title”,value:“ title”}这样的值样式制作辅助数组,然后在searchFunc中分配它,尽管返回了匹配。

是否甚至可以动态创建自动填充?

1 个答案:

答案 0 :(得分:0)

似乎当前的自动完成功能不允许editorParams使用函数作为参数来设置下拉值。如果可以通过AJAX发送键/值对象,则可以设置它,但是就动态设置,更改或搜索数据而言,目前看来这是不可能的。

另一个选择是使用编辑器:“ select”,它可以使用一个函数来设置其editorParams。这不是最好的解决方案,但这是我目前必须使用的解决方案。

Tabulator文档中有一个open issue,但到目前为止,开发人员都没有回应。

希望我能为您提供更好的答案!