我尝试使用服务器过滤和分页进行下拉列表。分页工作正常,但是当我开始输入过滤器时,我的控件会向服务器发送无限次查询。请帮我配置这个控件。 数据源:
select id, class, name from student;
下拉选项:
getDataSource = function () {
return new kendo.data.DataSource({
type: "json",
transport: {
read:{
url:"...",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json"
},
parameterMap: function (options, operation) {
switch (operation) {
case "read":
return JSON.stringify(options);
break;
}
}
},
schema: {
data: "Data",
total: "Total",
model: {
id: "Id"
}
},
pageSize: 20,
serverPaging: true,
serverFiltering: true
});
}
和服务器端:
$scope.DropDownOptions = {
dataTextField: "Value",
dataValueField: "Id",
dataSource: getDataSource(),
filter: "contains",
virtual: {
itemHeight: 26,
valueMapper: function (options) {
$.ajax({
url: "...",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({
skip: 0, pageSize: 20, take: 1, filter: { logic: "and", filters: [{ value: options.value, field: "Value", operator: "contains", ignoreCase: true }] }
}),
success: function (data) {
options.success([]);
}
})
}
},
height: 290,
}
更重要的是: 当我改变 options.success([])到options.success(data.Data),它仍然发送无限查询,但另外在第一项中有分层(2个相同的值在一个容器中绘制),并且分页正在减慢。当我滚动列表一点时,分页规范化
答案 0 :(得分:0)
问题解决了。这种奇怪的行为是由 response.Total = 1000; 我需要在这个字段中写入数据库中的实数