Ich bin verrückt mit Kendo UI AutoComplete-Komponente. Ich benutze meine eigenen Funktionen, um auf Daten mit jQuery zuzugreifen, also muss ich AutoComplete dataSource.transport.read als eine Funktion einstellen. Der Code ist in etwa so.Kendo UI AutoComplete Datenquelle Transport liest nur einmal
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 */
}
Dieser Code läuft perfekt, aber dataSource.transport.read wird nur das einmal genannt. Ich mache eine erste Suche mit dem Text 'michae' und AutoComplete-Komponente führt seine dataSource.transport.read wie erwartet. Dann füge ich einen weiteren Buchstaben hinzu, um nach 'michael' zu suchen, und dataSource.transport.read wird nie wieder aufgerufen. Ist so frustrierend!
Ich versuchte mit AutoSync DataSource-Eigenschaft, manuelle DataSource Sync, neue dataSource-Objekte auf AutoComplete dataBound, aber kein Glück.
Was mache ich falsch? Was vergesse ich?
Vielen Dank im Voraus.
Es ist erstaunlich! Die AutoComplete funktioniert jetzt wie ein Zauber! Ich habe viel Zeit damit verbracht, mich damit zu beschäftigen, ich wurde verrückt! Danke vielmals! – vermicida
Das gleiche Problem hier und die Lösung war sehr hilfreich! – HapiDjus