2011-08-05 67 views
0

我想將一些動態數據添加到「livesearch」組合框中。extjs4:鏈接組合

我有一套2組合。

第一個允許您選擇一些數據。 第二個組合是一個「livesearch」組合,它應該有來自第一個組合的動態參數。 因此,第二個組合鏈接到模型,該模型鏈接到查詢服務器並輸出數據的數據存儲區。但該數據必須根據第一個組合參數進行過濾...

任何人都知道如何做到這一點?

回答

0

我做到了before。關鍵是將第一個組合的值與第二個組合的值的請求一起傳遞,然後在服務器上過濾結果。其他的方法是加載所有可能的值的組合,然後在第一個組合中選擇一個值後,在第二個組合的商店中設置一個過濾器。

編輯:這是我用過的。

Ext.define('Ext.ux.FilteredCombo', { 
extend: 'Ext.form.field.ComboBox', 
alias: 'widget.filteredcombo', 

queryCaching: false, 

getParams: function (queryString) { 
    var params = this.callParent(arguments); 
    if (Ext.isArray(this.formParams)) { 
     var form = this.up('form'); 
     if (form) { 
      var bf = form.getForm(); 
      for (var i = 0; i < this.formParams.length; i++) { 
       var field = bf.findField(this.formParams[i]); 
       if (field) 
        params[this.formParams[i]] = field.getValue(); 
      } 
     } 
    } 
    return params; 
} 
}); 
+0

是,通過組合由數據存儲的請求的值是我想要的。 我可以獲取組合值,我可以從服務器獲取數據到數據存儲區,但當用戶開始向組合框輸入文本時,我無法動態更新數據存儲區參數。 當用戶點擊某些東西時,我可以用新的參數重新加載數據存儲,因爲我處理自己的商店重新加載,但商店重新加載可能由組合處理。我重寫該代碼的一部分,但這將是很難... – lapos34

+0

要解決重新加載問題在您的商店配置添加queryCaching:false。另外,我添加了我在示例中使用的代碼。 – Marko