我想知道如何更新或重新加載ExtJs ComboBox的列表值的方法。例如,我有一些複選框。這些複選框決定了ComboBox應具有的值。所以,選擇其中一些後,我點擊drowndown列表(組合框)查看值。更新或重新加載ExtJs ComboBox的商店
總之,如何更改ComboBox已有的值(存儲)。
希望有人能幫助我
感謝
我想知道如何更新或重新加載ExtJs ComboBox的列表值的方法。例如,我有一些複選框。這些複選框決定了ComboBox應具有的值。所以,選擇其中一些後,我點擊drowndown列表(組合框)查看值。更新或重新加載ExtJs ComboBox的商店
總之,如何更改ComboBox已有的值(存儲)。
希望有人能幫助我
感謝
在上的複選框事件偵聽器,得到你的組合框從讀取存儲的引用。然後調用其添加或刪除功能來更新商店中的數據,具體取決於複選框的位置checked更新完成後,調用ComboBox組件上的doLayout()
,它應根據商店的當前狀態重新呈現自身。
雖然我認爲有辦法讓它自動更新任何時間商店更新 - 我還沒有使用過。
您是否認爲可以更新其中一個事件的組合框?例如,我想單擊組合框(向下箭頭),然後在顯示之前,函數將根據所選複選框獲取值。 – user512514 2010-11-18 20:29:12
其實,我有一個帶有複選框的gridPanel。我從getSelections獲取的記錄中獲得一些值。我希望找到一種方法來執行此過程,而不是每次選擇一行時(或選中複選框)。這就是爲什麼我通過點擊組合框來實現它的想法。 – user512514 2010-11-18 20:38:53
在調用父級的事件處理程序之前,在組合框的內部事件中完成它,絕對有可能擴展ComboBox對象並添加自己的js。至於gridPanel,在沒有代碼的情況下進行概念化有點困難。 – 2010-11-18 23:39:52
它去有點像這樣
{
xtype: 'checkbox',
//configs
listeners : {
checked : function (checkbox, checkedBool) {
var yourCombo = Ext.getCmp(yourComboID);
//I'm not sure what params you will need to reload the comboBox from your
// service but hopfully this will give the jist of things. . .
yourCombo.store.reload(
{
params:
{yourParam : checkedBool},
{yourRowID : rowID}
});
}
}
:
mycombobox.bindStore(newStore);
在http://www.sencha.com/forum/showthread.php?40749-Change-Combobox-store-data-update支持團隊說。
編輯:如果我希望把新的數據填充實體店的時候,我做這樣的事情
storeMyStore = new Ext.data.Store({
...
listeners: {
load: function(this, records, options) {
cbMyCombo.bindStore(storeMyStore);
}
}
});
實際上不是非常「無證」, http://docs.sencha.com/extjs/4.2.5/#!/api/Ext.form.field.ComboBox-method-bindStore 但爲我做了詭計,謝謝! – 2015-12-16 09:19:21
呵呵,那是2011年無證的:) – Roberto 2016-09-21 18:05:40
我在這裏做一個選擇上的另一個組合框製成後更新的組合框。 基本上,最終用戶可以使用這兩個組合框來選擇一個主類別和一個子類別,這是基於第一個組合框的選擇。
這是第一個組合框中店:
Ext.define("StoreSubject", {
extend: "Ext.data.Model",
fields: [
{
name: 'i_Id'
},
{
name: 's_Value'
}
]
});
var StoreSubject = Ext.create('Ext.data.JsonStore', {
model: 'StoreSubject',
proxy: {
type: 'ajax',
url: '../General/AdministrationDefaultXMLDOM.aspx?qid=15',
reader: {
type: 'json'
}
}
});
StoreSubject.load();
這是第二個ComboBox中店:
Ext.define("StoreLanguageGroup", {
extend: "Ext.data.Model",
fields: [
{
name: 'i_Id'
},
{
name: 's_Value'
}
]
});
var StoreLanguageGroup = Ext.create('Ext.data.JsonStore', {
model: 'StoreLanguageGroup',
proxy: {
type: 'ajax',
url: '../General/AdministrationDefaultXMLDOM.aspx?qid=16',
reader: {
type: 'json'
}
}
});
我對Comobox代碼看起來是這樣的..
第一組合框:
var cmbSubjectName = Ext.create('Ext.form.field.ComboBox', {
id: 'cmbSubjectName',
fieldLabel: '<b>Subject</b>',
name: 'cmbSubjectName',
valueField: 's_Value',
displayField: 's_Value',
allowBlank: false,
anchor: '80%',
labelWidth: 150,
emptyText: '[--Choose--]',
minChars: 0,
store: StoreSubject,
queryMode: 'local',
typeAhead: true,
listeners: {
'select': {
fn: function (combo, value) {
var strSubjectName = Ext.getCmp('cmbSubjectName').getValue();
Ext.getCmp('cmbLanguageType').clearValue();
Ext.getCmp('cmbLanguageType').getStore().load({
params: {
SubjectName: strSubjectName
}
});
}
}
},
});
該代碼用於調用和覆蓋COMBOX店(陽痿否則將繼續加載)
Ext.override(Ext.LoadMask, {
onHide: function() {
this.callParent();
}
});
// -------------------- -------
二組合框:
var cmbLanguageType = Ext.create('Ext.form.field.ComboBox', {
id: 'cmbLanguageType',
fieldLabel: '<b>Language</b>',
multipleSelect: false,
name: 'cmbLanguageType',
valueField: 's_Value',
displayField: 's_Value',
allowBlank: false,
anchor: '80%',
labelWidth: 150,
emptyText: '[--Choose--]',
minChars: 0,
store: StoreLanguageGroup,
queryMode: 'local',
typeAhead: true,
});
希望這將幫助你..並請評價我的回答
歡迎來到[so]!請參加[遊覽]。 – Unihedron 2014-11-20 11:39:35
一些沒有解決的回答你的問題?請點擊複選標記接受最佳答案。 – Roberto 2014-04-22 16:17:50