1
私はサーバーのフィルタリングとページングでドロップダウンを試みています。ページングは正常に動作しますが、フィルタの入力を開始すると、コントロールは無限のクエリをサーバーに送信します。このコントロールの設定を手伝ってください。 データソース:ドロップダウンのための剣道。ドロップダウンの仮想化が正しく動作しない
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,
}
とサーバ側:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public DictionaryQueryResponse GetDictionary(KendoUIDropDownRequest request)
{
var response = new DictionaryQueryResponse();
string filterQuery = request.filter.filters[0].value;
var data = _client.GetDictionary(filter: filterQuery, skip: request.skip, take: request.take);
response.Data = data;
response.Total = 1000;
return response;
}
もう一つ重要なこと: 私は options.success([])に変更したときoptions.success(data.Data)では、依然として無限クエリを送信しますが、さらに最初の項目に階層化があります(2つの同じ値が1つのc ontainer)とページングが遅くなっています。リストを少しスクロールすると、ページングは正常化します