Kendo AutoComplete小部件出现问题。

我正在尝试在用户输入搜索的前两个字符后查询数据源。
在服务器(Web API)上,我使用这两个字符限制搜索,并且一切都很好,即如果我继续输入搜索内容,则返回一个子集并正确显示并进一步过滤。

但是,然后我重新键入一个新的搜索条目,该条目不再触发数据源,因此我被从第一个查询中检索到的数据所困扰。

我该如何正确处理?

谢谢

这是我的测试代码:

public class AlbumsController : ApiController
{
    HttpRequest _request = HttpContext.Current.Request;

    // GET api/albums
    public IEnumerable<Album> GetForAutoComplete()
    {
        string sw = _request["sw"] == null ? "" : _request["sw"].ToString();

        var query = (from a in Albums.MyAlbums
                     where a.Title.ToLower().StartsWith(sw)
                     orderby a.Title
                     select a).ToArray();

        return query;
    }

和我的客户端上的JavaScript是这样的:
    var dataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: "/api/Albums/GetForAutoComplete",
                data: {
                    sw: function () {
                        return $("#albumSearch").data("kendoAutoComplete").value();
                    }
                }
            }

        }

    });

    $("#albumSearch").kendoAutoComplete({
        dataSource: dataSource,
        dataTextField: "Title",
        minLength: 2,
        placeholder: "type in here.."
    });

最佳答案

serverFiltering设置为true。默认值为false,因此它将仅获取一次数据并假定它现在拥有所有数据,并且随后在客户端上进行过滤。
要使它每次都重新发送到服务器,请添加以下内容:

var dataSource = new kendo.data.DataSource({
    serverFiltering: true, // <-- add this line.
    transport: {
        ...
    }
});

10-07 20:01
查看更多