2013-08-03 37 views
0

我有一個應用了過濾器的數據源。當我爲列表視圖啓用可過濾搜索時,它會清除數據源上的原始過濾器。我如何才能在篩選的數據子集內搜索?Kendo ListView搜索無法正常使用已過濾的數據

以下是問題的實際操作:http://jsfiddle.net/KS7dB/。它由{b:「2B」}過濾。開始在搜索中輸入「ds」,它將清除過濾器並開始搜索所有內容,而不僅僅是過濾的子集。任何想法如何解決這種行爲?

var ds1 = new kendo.data.DataSource({ 
    data: [{ 
     stagename: "ds1 A", 
     b: "1b" 
    }, { 
     stagename: "ds1 B", 
     b: "2b" 
    }, { 
     stagename: "ds1 C", 
     b: "2b" 
    }, { 
     stagename: "ds1 D", 
     b: "2c" 
    }, { 
     stagename: "ds1 E", 
     b: "2c" 
    }], 
    filter: { 
     field: 'b', 
     operator: 'eq', 
     value: '2b' 
    } 
}); 

$("#stages_listview").kendoMobileListView({ 
    dataSource: ds1, 
    template: $("#stages_listview_template1").html(), 
    filterable: { 
     field: 'stagename', 
     operator: 'contains', 
     ignoreCase: true 
    } 
}); 

回答

1

我也花了一些時間挖掘到這一點,問題是,一旦你創建你的列表視圖過濾器,在實踐中是強調數據源的過濾器,它們不是兩個獨立的累積過濾器。因此你觀察到的行爲似乎是正確的。各地選項

工作:

  1. 覆蓋數據源過濾功能,因此它通過列表視圖需要傳遞給它的參數 始終追加默認的數據源 過濾器。這些線旁邊的東西。我不得不承認我沒有制定最終的功能解決方案。

    lw.dataSource.filter = function() { 
    arguments[arguments.length]= { field: "b", operator: "eq", value: "2b" }; 
    arguments.length += 1; 
    var result = lw.dataSource.originalfilter.apply(this, arguments); 
    return result; 
    

    }

  2. 濾波器服務器側