KendoUI自动完成分页问题

时间:2014-01-17 12:05:50

标签: autocomplete kendo-ui

我有一个绑定到KendoUI自动完成小部件的文本框。 JS代码如下所示:

        var dataSourceImeSearch = {
            type: "json",
            transport: {
                read: {
                    url: "@Url.Action("ImeSearch")",
                    contentType: "application/json; charset=utf-8",
                    type: "POST"
                },
                parameterMap: function (data, type) {
                    if (type == "read") {

                        if (data.filter) {
                            data = $.extend({ sort: null, filter: data.filter.filters[0] }, data);
                        } else {
                            data = $.extend({ sort: null, filter: null }, data);
                        }

                        return JSON.stringify(data);
                    } else {
                        return JSON.stringify({ model: data });
                    }
                }
            },
            batch: false,
            pageSize: 10,
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true,
            schema: {
                errors: "Errors",
                data: "Data",
                total: "TotalRecordCount",
                model: myModel
            },
            error: function (e) {
                if (e.errors) {
                    alert(e.errors);
                }
            }
        };

        $("#Ime").kendoAutoComplete({
            dataTextField: "PunoIme",
            filter: "contains",
            minLength: 3,
            dataSource: dataSourceImeSearch
        });

我在这里遇到一件奇怪的事。自动完成功能的工作方式是,当我键入运行到服务器的第三个字符并从那里获取JSON数据并显示前十个结果。问题是这个文本框正在搜索大型数据集,因此对于一些说4个字符的查询,结果集可以超过1000个项目。由于某种原因,窗口小部件没有计算出超过10个结果,当我在显示的自动完成下拉列表中向下滚动时,它不会触发任何搜索第二页等等。您可以看到数据源的serverPaging设置为true,但这没有帮助。

感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:3)

我在发布此问题后发现Autocomplete小部件不允许按设计分页。一些剑道员工在KendoUI论坛中解释了这一点,作为一个不良用户体验的例子(如果你有需要分页的自动完成)。我认为,因为在我看来,自动完成的第一个用例是在搜索一个人的情况下,在这里我正是这样做的。唯一的问题是,如果你按人的第二个名字进行搜索,你可能会在前3个或4个字符之后得到数百个结果,你真的需要分页。如果剑道人认为这是一个糟糕的用户体验,那么应该在自动完成文档中清楚地提到这一点,我真的没有在一个地方找到任何提及它,人们会认为它可能是一个好的想要向人们提及这样的事情,以便他们不必浪费一整天来弄清楚出了什么问题。

在我看来,在KendoUI网络演示页面的所有演示中最糟糕的用例示例之一是Shared DataSource示例,如果您在顶部的自动填充文本框中键入“ch”,您将最终10个结果是自动完成,但数据网格中有14个。我真的觉得愚蠢,剑道没有人认​​为这种行为很奇怪。

所以我对自己问题的回答如下:不要使用自动完成,除非是一些非常简单的用例(我真的不能想到一个有意义的单一用法)。我最终制作了一个包含5个文本框和搜索按钮的整个搜索表单,以防我希望能够使用2个文本框(一个具有自动完成功能)和一个搜索按钮。

答案 1 :(得分:0)

您已设置pageSize:10,这意味着只有10条记录返回到AutoComplete,其dataSource只包含10个元素,我担心默认情况下不会实现自动分页