ExtJS 4 Combobox AJAX Storeのバグと思われるものを試しています。Sencha ExtJS 4リンクされたコンボボックスの問題
私は記事でグリッドを持って、各記事はサプライヤーとカテゴリ、各サプライヤー一定カテゴリに属し募集記事が掲載されています。グリッドをフィルタリングするために、2つのCombos(Select Lists)を配置しました。 サプライヤの場合は、の場合はの1つです。これらのコンボはPHPスクリプトからAJAXによって値を取得します。私はこのようなコンボをリンクしようとしたまで
すべてが良い行ってきました:
は、ユーザーがコンボボックスからカテゴリを選択すると、サプライヤー Storeはカテゴリがいることを提供するサプライヤーとリフレッシュします(正常に動作します!) 。
ユーザーは、コンボボックスからサプライヤー、およびカテゴリストアの更新(放火犯と見られるようなリフレッシュは、良いです)を選択します。
カテゴリコンボボックスをもう一度選択すると、ローディングマスクが消えないので、コンボの値を変更できません。
私はテストしましたが、AJAXは正常に動作しています。これは、読み込みマスクのEXTJS 4の問題です。
問題は、両方の方法が起こっている:
A)
1.ユーザーはカテゴリを選択
2.ユーザーは、サプライヤー
3を選択します。ユーザーはカテゴリを選択できません(読み込みマスクは泡立ちません) Y)
AND
B)
ユーザがカテゴリ
3を選択
サプライヤーを選択します。問題は、これらの状況で発生しているようだ
:ユーザーはEDIT
(積載マスクが消えない)サプライヤーを選択することはできません(その逆も:supplier->カテゴリ)
1.ユーザーは
2.ユーザーがカテゴリ
0に変更するカテゴリを選択します3.ユーザーがサプライヤーを選択することはできません(ロードマスクが消えない)ここでは私のモデルです:ここでは
Ext.define('Category', {
extend: 'Ext.data.Model',
fields: [
{ name: 'name'},
{ name: 'id'}
]
});
Ext.define('Supplier', {
extend: 'Ext.data.Model',
fields: [
{ name: 'name'},
{ name: 'id'}
]
});
は私の店です:
var categoryStore = Ext.create('Ext.data.Store', {
model: 'Category',
autoLoad: true,
remoteSort: true,
proxy: {
type: 'ajax',
url: 'GetCategorysForSupplier',
reader: {
type: 'json',
root: 'items'
},
extraParams: {
supplier: 0
}
}
});
var supplierStore = Ext.create('Ext.data.Store', {
model: 'Supplier',
autoLoad: true,
remoteSort: true,
proxy: {
type: 'ajax',
url: 'getSuppliersForCategory.php',
reader: {
type: 'json',
root: 'items'
},
extraParams: {
category: 0
}
}
});
そして、ここに私のコンボです:
var categoryFilterCombo = Ext.create('Ext.form.field.ComboBox', {
xtype: 'combo',
store: categoryStore,
displayField: 'name',
valueField: 'id',
fieldLabel: 'Category Filter',
listeners: {
change: function(field,newVal) {
if (Ext.isNumeric(newVal)) {
supplierStore.proxy.extraParams.category = newVal;
articleStore.proxy.extraParams.category = newVal;
supplierStore.load();
articleStore.load();
}
}
}
});
var supplierFilterCombo = Ext.create('Ext.form.field.ComboBox', {
store: supplierStore,
displayField: 'name',
queryMode: 'local',
valueField: 'id',
fieldLabel: 'Supplier Filter',
listeners: {
change: function(field,newVal) {
if (Ext.isNumeric(newVal)) {
categoryStore.proxy.extraParams.supplier = newVal;
articleStore.proxy.extraParams.supplier = newVal;
categoryStore.load();
articleStore.load();
}
}
}
});
種類
ダンCearnau