Jan 31
ExtのComboboxでonTriggerイベントをカスタマイズ
Ext.form.ComboBoxはドキュメントには載っていないですが、コンフィグにonTriggerを用意することで、onTriggerイベントをオーバーライドすることが出来ます。
ExtのComboboxデモのソースをそのまま使用するとonTriggerごとにphpへアクセスする動作が出来なかったのでオーバーライドで修正しました。
conveyorのtrunkでlineリストをロードするのに使用しました。
実際に使用しているソースとは違いますが、以下のようにできます。
privateなプロパティを修正したり、privateなメソッドを使ってるのであまり良くないとは思うんですけどねー。
var store = new Ext.data.Store({
Ext.data.HttpProxy({method:'GET',url:'アドレス'}),
reader: new Ext.data.JsonReader({
root: 'root'
}, Ext.data.Record.create([{name: 'hoge'},{name:'fuga'}]))
});
});
var combo = new Ext.form.ComboBox({
mode:'remote',
store: store,
valueField: 'hoge',
displayField:'fuga',
loadingText:'Loading...',
onTriggerClick:function(){
this.store.reload();
this.bindStore(this.store,true);
if(this.disabled){
return;
}
if(this.isExpanded()){
this.collapse();
this.el.focus();
}else {
this.onFocus({});
if(this.triggerAction == 'all') {
this.doQuery(this.allQuery, true);
} else {
this.doQuery(this.getRawValue());
}
this.el.focus();
}
},
scope:this
});
オーバーライドする時は元のソースを入れておかないと当然動きがおかしくなります。
念のため。
このエントリーのはてなブックマーク (