2012-12-02 64 views
0

通過下面這個例子http://dev.sencha.com/deploy/ext-4.1.0-gpl/examples/form/forum-search.htmlExtJS的 - 自動完成過濾器2點的屬性

我可以申請我的組合框的自動完成功能,使用PHP/PostgreSQL的查詢檢索名字則:

{ 
xtype: 'combo', 
store: ds, 
hideTrigger:true, 
typeAhead: false, 
id: 'search_input_text', 
width: 187, 
queryMode: 'remote', 
hideLabel: true, 
queryParam: 'query', 
displayField: 'first_name', 
valueField: 'first_name', 

listConfig: { 
loadingText: 'Loading...',    
getInnerTpl: function() { 

    return '{first_name}'; 
       }} 
listeners: { 
    buffer: 50, 
    change: function() { 
     var store = this.store; 
     store.clearFilter(); 
     store.filter({ 
      property: 'first_name', 
      anyMatch: true, 
      value : this.getValue() 
     }); 

    } 
    } 
} 

現在,我需要編輯它以讓用戶輸入學生的名字或姓氏,然後輸入的每個姓名(第一個或最後一個)將顯示在組合框中。

所以,我編輯的查詢,使之檢索名稱:

SELECT first_name, last_name FROM students WHERE first_name ILIKE '%$query%' OR last_name ILIKE '%$query%' "; 

和:

displayField: 'first_name'+'last_name', 
valueField: 'first_name'+'last_name', 

return '{first_name}'+'{last_name}'; 

store.filter({ 
       property: 'first_name', 
       anyMatch: true, 
       value : this.getValue() 
      }, 
{ 
       property: 'last_name', 
       anyMatch: true, 
       value : this.getValue() 
      } 

,但是,它仍然RETR

store.filter({ 
        property: 'last_name', 
        anyMatch: true, 
        value : this.getValue() 
       }); 

它工作得很好,只有姓氏:按什麼用戶類型, 需要注意的是,如果我用這個單獨ieves唯一名字。

回答

0

可以將多個過濾器,數據存儲是這樣的:

var filters = [ 
    new Ext.util.Filter({ 
    filterFn: function(item){return item.get('first_name') == this.getValue() || item.get('last_name') == this.getValue(); 
    } 
    }) 
]; 

store.filter(filters); 

上面的代碼塊只是關於如何在同一領域應用多個過濾器的想法。注意雙管「||」。您可以根據需要使用「& &」。這就像SQL查詢。