Я схожу с ума от компонента автозаполнения Kendo UI. Я использую свои собственные функции для доступа к данным с помощью jQuery, поэтому мне нужно установить AutoComplete dataSource.transport.read как функцию. Код примерно такой.
minLengthAtocomplete = 3;
$('#autocomplete').kendoAutoComplete({
minLength : 3,
filter : "contains",
dataValueField : "key",
dataTextField : "value",
dataSource : new kendo.data.DataSource({
transport : {
read : _OnTransportRead
},
schema : {
/* object schema */
}
})
});
function _OnTransportRead(e) {
var text = $.trim(e.data.filter.filters[0].value);
if (text && text.length >= minLengthAtocomplete) {
_GetUsers(
text,
function onSuccess(data) {
var users = [];
/* sets users with info in data */
e.success(users);
},
function onError(error) {
/* stuff with error */
}
);
}
}
function _GetUsers(userName, onSuccess, onError) {
/* Ajax to get users from DB */
}
Этот код работает отлично, но dataSource.transport.read вызывается только один раз. Я выполняю первый поиск с текстом 'michae' , и компонент AutoComplete запускает свой dataSource.transport.read, как ожидалось. Затем я добавляю еще одну букву для поиска 'michael' , и dataSource.transport.read больше никогда не вызывается. Так обидно!
Я попытался использовать свойство autoSync dataSource, ручную синхронизацию источника данных, установить новые объекты dataSource в AutoComplete dataBound, но не повезло.
Что я делаю не так? Что я забываю?
Заранее спасибо.
1 ответ
Вы должны включить serverFiltering, чтобы источник данных каждый раз отправлял запросы.
$('#autocomplete').kendoAutoComplete({
minLength : 3,
filter : "contains",
dataValueField : "key",
dataTextField : "value",
dataSource : new kendo.data.DataSource({,
serverFiltering: true,
transport : {
read : _OnTransportRead
},
schema : {
/* object schema */
}
})
});
Похожие вопросы
Связанные вопросы
Новые вопросы
autocomplete
Автозаполнение - это функция пользовательского интерфейса, предоставляемая приложениями, где программа предсказывает слово или фразу, которые пользователь хочет напечатать, не вводя их полностью пользователем.
e.data.filter
не определено.