2014-07-21 2 views
0

Я хотел Явно установить фильтр для заполнения KendoUI списка, В соответствии с этим link я сделал это,Явно установка фильтра для источника данных KendoUI

 $(function() { 
     var model = { 
      items:ko.observableArray([]) 
     } 
     var dataSource = new kendo.data.DataSource({ 
      serverFiltering: true, 
      pageSize: 20, serverPaging: true, 
      schema: { data: function (data) { return data.Items; }, total: function (data) { return data.Count; } }, 
      type: 'odata', 
      change: function() { 
       var items = this.data(); 
       console.log(items); 
       model.items.removeAll(); 
       for (var x=0;x<items.length;x++) { 
        model.items.push(items[x]); 
       } 
      }, 
      transport: { 
       read: { 
        url: "/api/my/thumbnail/", 
        dataType: "json", 
       } 
      }, 
     }); 


     dataSource._filter = [{ field: "Id", operator: "eq", value: 149 }]; 
     ko.applyBindings(model, document.getElementById("thumbnailListView")); 
     dataSource.read(); 

    }); 
</script> 

это то, что я получаю в DataSource,

ct.extend.init {options: Object, _map: Object, _prefetch: Object, _data: ct.extend.init[0], _pristineData: Array[0]…} 
_aggregate: undefined 
_changeHandler: function() { 
_data: ct.extend.init[0] 
_destroyed: Array[0] 
_events: Object 
_filter: Array[1] 
0: Object 
field: "Id" 
operator: "eq" 
value: 149 
__proto__: Object 
length: 1 
__proto__: Array[0] 
_group: Array[0] 
length: 0 
__proto__: Array[0] 
_map: Object 
_page: 1 
_pageSize: 20 
_prefetch: Object 
_pristineData: Array[0] 
_pristineTotal: 0 
_ranges: Array[0] 
_sort: undefined 
_total: undefined 
_view: Array[0] 
data: function (e){var n=this;return e===t?n._data:(n._data=this._observe(e),n._pristineData=e.slice(0),n._ranges=[],n._addRange(n._data),n._total=n._data.length,n._pristineTotal=n._total,n._process(n._data),t)} 
options: Object 
reader: dt.extend.init 
table: null 
transport: dt.extend.init 
__proto__: n.extend.r 

Но на dataSource.read(), я получаю эту ошибку: 'Uncaught TypeError: Can not read property' length 'undefined'.

+0

Пробовал ли вы использовать 'dataSource.filter (...)' для программного программирования фильтра? См. Документацию [здесь] (http://docs.telerik.com/kendo-ui/api/framework/datasource#methods-filter) – OnaBai

ответ

1

Не уверен, что это помогает, но вы можете попробовать это приступающим

  1. получить массив перебрать all data: dataSource.data()
  2. доступ в specific item: dataSource.at(1)
  3. получить filtered data: datasource.view()
  4. прибудете a pure JS array назад: dataSource.data().toJSON()