带有自动建议的 Extjs 级联组合框
Extjs Cascaded combobox with autosuggestion
我有两个组合框,一个用于 Company,另一个用于 Employees。我想让 Employee ComboBox 依赖于公司 ID,即应该根据 Employee ComboBox 中的选定值进行填充。另外,我想在 Employee ComboBox 中启用自动建议。下面是我写的代码:
{
xtype:'combo',
multiSelect : false,
store :companyStore,
afterLabelTextTpl:'<span style="color: rgb(255, 0, 0); padding-left: 2px;">*</span>',
editable:true,
forceSelection:true,
id:'companyCombo',
fieldLabel:'Company Name',
displayField : 'CompanyName',
valueField : 'CompanyId',
submitEmptyText :'false' ,
width:350,
mode: 'remote',
queryParam: 'query',
hideTrigger: true,
selectOnFocus:true,
typeAhead : true
},
{
xtype:'combo',
multiSelect : false,
store : companyEmployeeStore,
afterLabelTextTpl:'<span style="color: rgb(255, 0, 0); padding-left: 2px;">*</span>',
editable:true,
forceSelection:true,
id:'companyEmployeeCombo',
fieldLabel:'Employee Name',
displayField : 'EmployeeName',
valueField : 'EmployeeId',
submitEmptyText :'false' ,
width:350,
mode: 'remote',
queryParam: 'query',
hideTrigger: true,
selectOnFocus:true,
typeAhead : true
}
var companyStore = Ext.create('Ext.data.Store', {
fields : ['CompanyId','CompanyName'],
proxy : {
url : 'getListOfCompanies',
type : 'ajax'
}
});
var companyEmployeeStore = Ext.create('Ext.data.Store', {
fields : ['EmployeeId','EmployeeName'],
proxy : {
url : 'getListOfEmployeesForCompany',
type : 'ajax'
}
});
据我所知,这一行
queryParam: 'query',
会将字段的值传递到我的后端。但根据我的要求,我需要 Company ComboBox 中的 CompanyId(用于过滤/级联效果)以及我在 Employee ComboBox 中输入的值 enter code here
(用于自动建议) .
我怎样才能达到同样的效果?提前致谢
只需将 CompanyId 添加到 beforequery 处理程序中的 companyEmployeeStore 之类的 extraParams。
Ext.getCmp('companyEmployeeCombo').on({
beforequery: function (queryPlan) {
Ext.apply(queryPlan.combo.store.getProxy().extraParams, {
CompanyId: EmployeeId /*bind your value*/
});
}
})
我有两个组合框,一个用于 Company,另一个用于 Employees。我想让 Employee ComboBox 依赖于公司 ID,即应该根据 Employee ComboBox 中的选定值进行填充。另外,我想在 Employee ComboBox 中启用自动建议。下面是我写的代码:
{
xtype:'combo',
multiSelect : false,
store :companyStore,
afterLabelTextTpl:'<span style="color: rgb(255, 0, 0); padding-left: 2px;">*</span>',
editable:true,
forceSelection:true,
id:'companyCombo',
fieldLabel:'Company Name',
displayField : 'CompanyName',
valueField : 'CompanyId',
submitEmptyText :'false' ,
width:350,
mode: 'remote',
queryParam: 'query',
hideTrigger: true,
selectOnFocus:true,
typeAhead : true
},
{
xtype:'combo',
multiSelect : false,
store : companyEmployeeStore,
afterLabelTextTpl:'<span style="color: rgb(255, 0, 0); padding-left: 2px;">*</span>',
editable:true,
forceSelection:true,
id:'companyEmployeeCombo',
fieldLabel:'Employee Name',
displayField : 'EmployeeName',
valueField : 'EmployeeId',
submitEmptyText :'false' ,
width:350,
mode: 'remote',
queryParam: 'query',
hideTrigger: true,
selectOnFocus:true,
typeAhead : true
}
var companyStore = Ext.create('Ext.data.Store', {
fields : ['CompanyId','CompanyName'],
proxy : {
url : 'getListOfCompanies',
type : 'ajax'
}
});
var companyEmployeeStore = Ext.create('Ext.data.Store', {
fields : ['EmployeeId','EmployeeName'],
proxy : {
url : 'getListOfEmployeesForCompany',
type : 'ajax'
}
});
据我所知,这一行
queryParam: 'query',
会将字段的值传递到我的后端。但根据我的要求,我需要 Company ComboBox 中的 CompanyId(用于过滤/级联效果)以及我在 Employee ComboBox 中输入的值 enter code here
(用于自动建议) .
我怎样才能达到同样的效果?提前致谢
只需将 CompanyId 添加到 beforequery 处理程序中的 companyEmployeeStore 之类的 extraParams。
Ext.getCmp('companyEmployeeCombo').on({
beforequery: function (queryPlan) {
Ext.apply(queryPlan.combo.store.getProxy().extraParams, {
CompanyId: EmployeeId /*bind your value*/
});
}
})