2017-07-04 18 views
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)とページングが遅くなっています。リストを少しスクロールすると、ページングは​​正常化します

答えて

0

問題が解決しました。この奇妙な振る舞いは によって引き起こされました。 このフィールドには、データベースからの実数を書き込む必要がありました。

関連する問題