重新输入搜索字符串时,Kendo AutoComplete 不会重新查询数据源

Mar*_*cel 4 kendo-ui

我的 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;
    }
Run Code Online (Sandbox Code Playgroud)

我在客户端的 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.."
    });
Run Code Online (Sandbox Code Playgroud)

Cod*_*ike 5

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

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