У меня есть виджет 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();
},
}
});
});