Kendo Multi выберите медленный с большим источником данных - PullRequest
0 голосов
/ 18 июня 2020

У меня есть виджет MultiSelect, использующий Jquery для загрузки источника данных aprx 30000 записей из API. При загрузке этих массовых данных в MultiSelect возникает проблема с производительностью, поэтому я пытаюсь установить фильтр на стороне сервера. Применяются autobind:false и minlenth :4, поэтому он загружается без каких-либо проблем при первом поиске на основе первых 4 введенных символов, событие не запускается при втором поиске.

"Обычно источник данных имеет для обновления на основе ввода поиска "

Например: всего в источнике данных API существует 20 результатов. Клиенту предоставляются только 10 совпадающих результатов, отфильтрованных на основе ввода данных пользователем. при следующем поиске элемента он должен отобразить другие совпавшие элементы x на основе введенного текста.

 $(document).ready(function () {

        $("#multiselect").kendoMultiSelect({
                                placeholder: "Please Enter first four characters of Name...",
                                dataTextField: "Name",
                                dataValueField: "Id",
                                autoBind: false,
                                minLength: 4,
                                filter: "contains",
                    dataSource: {
                    transport: {
                    read: {
                    url: "@Html.Raw(Url.Action("FillMultiSelect", "Controller"))",
                    type: "GET",
                    dataType: "json",
                            data: function () {
                                var widget = $('#multiselect').data('kendoMultiSelect');
                                // get the text input
                                var searchInput = widget.input.val();
                    var data = {

                                 FilterInput: searchInput
                               };
                    addAntiForgeryToken(data);
                    return data;
                    }

                    }

                    },
                    error: function (e) {
                    display_kendoui_grid_error(e);
                    // Cancel the changes
                    this.cancelChanges();
                    },
                    }
        });


    });
...