我已經嘗試了這種不同的方式,但仍無法使篩選器正常工作。我的分機應用程序允許用戶從組合框中選擇單個狀態,下面的網格在所選的「值」=狀態中顯示更多數據。在選擇時,組合框觸發一個函數,用於過濾網格存儲並更新商店... 這是我的商店網格...組合框選擇的篩選器商店
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
id: 'OurData',
pageSize: 20,
pageNumber: 1,
remoteSort: true,
fields: [
{ name: 'States' },
{ name: 'FullName' },
{ name: 'Capital' },
{ name: 'Population' }
],
proxy: {
type: 'ajax',
url: 'GetState/getS',
reader: {
type: 'json',
root: 'myTable',
idProperty: 'States',
totalProperty: '@count'
}
}
});
store.loadPage(1);
這是我的組合框
xtype: 'combo',
id: 'iccombo',
scope: this,
store: this.Combostore,
fieldLabel: 'Short State',
displayField: 'States',
valueField: 'States',
typeAhead: true,
triggerAction: 'all',
queryMode: 'remote',
name: 'State',
labelWidth: 125,
anchor: '95%',
listeners: {
scope: this,
select: this.fireFilter
}
,這是其中濾波器應該發生......
fireFilter: function (value) {
// Get passed value
this.selectedC = value.getValue();
console.log('selectedValue: ' + this.selectedC);
// Clear existing filters
this.store.clearFilter(false);
// Build filter
var myfilter = Ext.create('Ext.util.Filter', {
scope: this,
filterFn: function (item) {
var fieldNames = item.fields.keys;
for (var j = 0; j < fieldNames.length; j++) {
var fieldName = fieldNames[j];
if (item.data[fieldName] != null) {
var stringVal = item.data[fieldName].toString();
if (stringVal != null && stringVal.toLowerCase().indexOf(value.toLowerCase()) != -1) {
return true;
}
}
}
return false;
}
});
// Apply filter to store
this.store.filter(myfilter);
}
當我運行代碼時,它顯示網格中的所有數據,並選擇組合框,它仍然顯示相同的數據。 由於某種原因,代碼從未運行通過filterFn ...因爲我的console.log doesn 「T顯示 這是我在Firebug的響應
_dc 1352902173425
filter [{"property":null,"value":null}]
limit 20
page 1
start 0
,你可以清楚地看到,選擇了‘價值’是空的,但我的‘的console.log’打印價值選擇...我覺得我得到的傳遞價值和應用過濾器的方式是不正確的...請有人請看看...謝謝
UPDATE ...我能夠進入功能和我的console.log顯示所有田野......但一旦我到達最後一條if語句...我得到這個錯誤
TypeError: value.toLowerCase is not a function
我在做什麼錯在這裏?由於
感謝這個詳細的信息sra ...我試圖實現你的回答... whare我是否聲明我...是否與我的範圍相同:這...我使用範圍的原因:這是我已經聲明我的商店爲this.myStore ... – EagleFox
謝謝sra。 ..我希望他們不是錯別字..:)... for循環缺少一個聲明? – EagleFox
我實際上可以進入filterFn,但沒有任何反應......沒有錯誤,但空白網格..我注意到的是......我的控制檯打印說商店是未定義的...我有一種感覺,選定的值沒有被正確傳遞 – EagleFox