我有一个包含多个组合框的属性网格,我想根据前一个框中选择的内容过滤一个框中的值。
我的代码如下所示:
var tempPropGrid = me.getView().add(
{
xtype:'propertygrid',
width: 80,
header: false,
title: 'prop grid',
//for some reason the headers are not hiding, we may need to deal with this using CSS
//hideHeaders: true,
enableColumnResize: false,
sortableColumns: false,
nameColumnWidth: 1,
source: record.data,
sourceConfig: {
teamName: {
editor: Ext.create('Ext.form.ComboBox', {
store: teams,
queryMode: 'local',
displayField: 'teamName',
valueField: 'teamName'
}),
displayName: 'Team'
},
leadDev : {
editor: Ext.create('Ext.form.ComboBox', {
store: teamMembers.filter('teamName', teamName.value), // this probably won't work but you get the idea
queryMode: 'local',
displayField: 'personName',
valueField: 'personName'
}),
displayName: 'Lead Dev'
},
我的JSON对象如下所示:
{
"periodName": "Week1",
"teamName": "tango",
"roleName": "SWE III",
"roleExperience": "3",
"id": "21ea7f61-a9a5-4dbd-b405-e7a0449f8096"
},
所以基本上我正在为一个团队分配一个项目,然后根据我选择的团队,我想根据他们在该团队中选择一个leadDev。
我不确定如何获取组合框的值并动态应用过滤器,这样任何帮助都会很棒。
答案 0 :(得分:0)
网格中的每一行都是一个模型。因此,在leadDev
组合框中,您只需要监听'expand'
事件,然后检索当前行模型并将此模型中的值应用于过滤器。
它应该看起来像这样(未选中):
Ext.create('Ext.form.ComboBox', {
store: store
queryMode: 'local',
displayField: 'personName',
valueField: 'personName',
listeners: {
'expand' : function(combo) {
var grid = combo.up('grid');
var selection = grid.getSelectionModel().getSelection();
var currentRowModel = //get this from selection
combo.getStore().clearFilter(true);
combo.getStore().filter('teamName',currentRowModel.teamName);
}
}
})
当用户从第一个组合框
中选择值时,您需要更新当前模型