Kendo UI AutoComplete 数据源传输只读取一次

Posted

技术标签:

【中文标题】Kendo UI AutoComplete 数据源传输只读取一次【英文标题】:Kendo UI AutoComplete datasource transport reads only once 【发布时间】:2012-09-15 15:49:21 【问题描述】:

我对 Kendo UI AutoComplete 组件越来越感兴趣。我正在使用自己的函数通过 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 Sync,在 AutoComplete dataBound 上设置新的 dataSource 对象,但没有运气。

我做错了什么?我忘记了什么?

提前致谢。

【问题讨论】:

我运行了上面的确切代码,我收到一条错误消息,指出 e.data.filter 未定义。 【参考方案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 现在就像一个魅力!我花了很多时间来处理它,我快疯了!非常感谢! 这里有同样的问题,解决方案最有帮助!

以上是关于Kendo UI AutoComplete 数据源传输只读取一次的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Kendo UI 自动完成控件设置宽度

Kendo AutoComplete - 强制用户做出有效选择

在 Kendo 批量编辑中验证 AutoComplete

Kendo Mobile 的 Kendo AutoComplete?

kendo AutoComplete实现多筛选条件

Kendo UI MVVM 中的数据绑定对象