ExtJS 链式存储过滤器不过滤
ExtJS chained store filter not filtering
组合框的过滤器不起作用,我不确定为什么。我有两个组合框,一个是 province,另一个是 city。当我 select 一个省份时,城市组合框将根据 selected 省份使用 province_id.
进行过滤
查看模型代码:
data: {
selectedProvince: null
},
stores: {
province: {
fields: [ 'province_id', 'province_name' ],
proxy: {
type: 'ajax',
url: '*some url to province*',
reader: {
type: 'json',
rootProperty: 'data'
}
}
},
city: {
fields: [ 'city_id', 'city_name', 'province_id' ],
proxy: {
type: 'ajax',
url: '*some url to city*',
reader: {
type: 'json',
rootProperty: 'data',
}
},
},
filteredStore: {
type: 'chained',
source: '{city}',
remoteFilter: false,
filters: [{
property: 'province_id',
value: '{selectedProvince}'
}],
}
}
省组合框代码:
xtype: 'combobox',
label: 'Province',
valueField: 'province_id',
displayField: 'province_name',
bind: {
store: '{province}',
value: '{selectedProvince}'
}
城市组合框代码:
xtype: 'combobox',
label: 'City',
valueField: 'city_id',
displayField: 'city_name',
bind: {
store: '{filteredStore}'
}
我试过这些:
https://fiddle.sencha.com/#fiddle/983&view/editor
https://fiddle.sencha.com/#view/editor&fiddle/2dt0
我也试过将过滤器放在组合框内,如下所示:
xtype: 'combobox',
label: 'City',
valueField: 'city_id',
displayField: 'city_name',
bind: {
store: '{filteredStore}',
filters: {
property: 'province_id',
value: '{selectedProvince}'
}
}
而且,结果仍然没有被过滤。如果有帮助,我正在使用 extjs 7。谢谢
这是 的副本:
答案还在这Fiddle
我更新了它以匹配您在此线程中的问题。
您必须将两个商店都设置为 autoLoad: true
,将组合框设置为 queryMode: 'local'
。
组合框的过滤器不起作用,我不确定为什么。我有两个组合框,一个是 province,另一个是 city。当我 select 一个省份时,城市组合框将根据 selected 省份使用 province_id.
进行过滤查看模型代码:
data: {
selectedProvince: null
},
stores: {
province: {
fields: [ 'province_id', 'province_name' ],
proxy: {
type: 'ajax',
url: '*some url to province*',
reader: {
type: 'json',
rootProperty: 'data'
}
}
},
city: {
fields: [ 'city_id', 'city_name', 'province_id' ],
proxy: {
type: 'ajax',
url: '*some url to city*',
reader: {
type: 'json',
rootProperty: 'data',
}
},
},
filteredStore: {
type: 'chained',
source: '{city}',
remoteFilter: false,
filters: [{
property: 'province_id',
value: '{selectedProvince}'
}],
}
}
省组合框代码:
xtype: 'combobox',
label: 'Province',
valueField: 'province_id',
displayField: 'province_name',
bind: {
store: '{province}',
value: '{selectedProvince}'
}
城市组合框代码:
xtype: 'combobox',
label: 'City',
valueField: 'city_id',
displayField: 'city_name',
bind: {
store: '{filteredStore}'
}
我试过这些:
https://fiddle.sencha.com/#fiddle/983&view/editor
https://fiddle.sencha.com/#view/editor&fiddle/2dt0
我也试过将过滤器放在组合框内,如下所示:
xtype: 'combobox',
label: 'City',
valueField: 'city_id',
displayField: 'city_name',
bind: {
store: '{filteredStore}',
filters: {
property: 'province_id',
value: '{selectedProvince}'
}
}
而且,结果仍然没有被过滤。如果有帮助,我正在使用 extjs 7。谢谢
这是
答案还在这Fiddle
我更新了它以匹配您在此线程中的问题。
您必须将两个商店都设置为 autoLoad: true
,将组合框设置为 queryMode: 'local'
。