ExtJSのCompboxの割当問題
5766 ワード
Extjsのbugを探して墓を掘るのと似ています!特に毎回バージョンが更新された後は…
Extjsは商業化されてから、GPLバージョンのダウンロードアドレスはますます探しにくくなりました.ここではまだ訪問できる住所を教えてください.https://www.sencha.com/legal/gpl/
無料のExtjsをダウンロードすれば、リンクが失効したら、みんなに一つの方法を教えます.https://www.sencha.com 公式サイトの右上の検索欄でgplを検索したら見つけられます.
Extjsを使って長くなりました.たくさんのものを見てAPIを調べなければなりません.後に考えてみると、Compboxの赋価さえ覚えられなくなりました.これは一番簡単な賦課方法です.
以上の割当値は、再既知のdataの場合、dataが動的に更新され、かつ不確定である場合、例えば、queryMode:"remote"の方式で動的に調べられている場合、このような状況は複雑であり、方式の多くの原理は、store.load()の後にstore.add(data)がデフォルト値をstore中に設定してからcompbobox.setValue(data)を設定すればいいです.一般的にロードイベントでやることができますが、実際に使うともっと難しい問題があります.
Extjsは商業化されてから、GPLバージョンのダウンロードアドレスはますます探しにくくなりました.ここではまだ訪問できる住所を教えてください.https://www.sencha.com/legal/gpl/
無料のExtjsをダウンロードすれば、リンクが失効したら、みんなに一つの方法を教えます.https://www.sencha.com 公式サイトの右上の検索欄でgplを検索したら見つけられます.
Extjsを使って長くなりました.たくさんのものを見てAPIを調べなければなりません.後に考えてみると、Compboxの赋価さえ覚えられなくなりました.これは一番簡単な賦課方法です.
var cb1 = Ext.create('Ext.form.field.ComboBox', {
renderTo: Ext.getBody(),
fieldLabel: ' 1'
});
cb1.setValue("a");
または以下のようなデフォルトの割り当て方法var cb2 = Ext.create('Ext.form.field.ComboBox', {
renderTo: Ext.getBody(),
fieldLabel: ' 2',
value: "b"
});
Storeの割当方式ですが、このような割当方式はvalueFieldとdisplayFieldの二つのフィールドが必要です.var store4 = Ext.create('Ext.data.Store', {
data: datas
});
var cb4 = Ext.create('Ext.form.field.ComboBox', {
renderTo: Ext.getBody(),
fieldLabel: ' 4',
valueField: 'id',
displayField: 'name',
store: store4,
value: datas[0]['id']
});
ここでは、標準的な割当値value属性を使用していますが、このvalueはvalue Fieldの値でなければならないか、または以下のAPI方式を使用して値を割り当てます.cb4.setValue(datas[0]['id']);
このデフォルトの割当方法は同じでなければなりません.valueFieldの値も必要です.以上の割当値は、再既知のdataの場合、dataが動的に更新され、かつ不確定である場合、例えば、queryMode:"remote"の方式で動的に調べられている場合、このような状況は複雑であり、方式の多くの原理は、store.load()の後にstore.add(data)がデフォルト値をstore中に設定してからcompbobox.setValue(data)を設定すればいいです.一般的にロードイベントでやることができますが、実際に使うともっと難しい問題があります.
// data ,defaultPostId
setUserStore: function (data, defaultPostId) {
var copanel = this,
d = data;
var info = JController.APIUser.getSearchMembers().info();
var store = Ext.create('Ext.data.Store', {
fields: ['id', 'name', 'nick', 'showName'],
proxy: {
type: 'ajax',
url: info.url,
extraParams: info.param
},
listeners: {
// store.add 、 combobox.setValue 、 store.load
datachanged: function (me, o) {
var count = me.count();
// store
if (data) {
data = null;
me.add(d);
return;
}
// store data
if (d) {
copanel.find('userId').setValue(d['id']);
d = null;
return;
}
// return
for (var i = 0; i < count; i++) {
var record = me.getAt(i);
record.set('showName', record.get('name') + ' ( ' + record.get('nick') + ' ) ')
}
copanel.initPostRadioGroup(defaultPostId);
}
}
});
store.load();
this.find('userId').bindStore(store);
},
もちろんここは私の解決方法です.ご参考ください.