我有一个2 DropDownBoxes,其中1个drop box值被放在第一个选定值上。
如何在第二个DropDownBox中创建动态存储。
这是代码:
{
xtype: 'combobox',
displayField: 'vendor_name',
typeAhead: true,
mode: 'local',
triggerAction: 'all',
emptyText:'Choose vendor...',
selectOnFocus:true,
fieldLabel: 'Vendor Name',
margin: 10,
id: 'txtBidVendor',
labelWidth: 100,
store: Ext.create('Ext.data.Store', {
fields:[
{name: 'vendor_name'}
],
proxy: {
type: 'ajax',
timeout: 120000,
url: 'GetVendors.jsp',
reader: {
type: 'json',
root: 'data',
successProperty: 'success'
}
},
autoLoad: true
})
},
{
xtype: 'combobox',
displayField: 'rate_desc',
typeAhead: true,
mode: 'local',
triggerAction: 'all',
emptyText:'Choose Quality...',
selectOnFocus:true,
fieldLabel: 'Vendor Quality',
margin: 10,
id: 'txtBidVendorQuality',
labelWidth: 100,
store: Ext.create('Ext.data.Store', {
fields:[
{name: 'rate_desc'}
],
proxy: {
type: 'ajax',
timeout: 120000,
url: 'GetVendorQuality.jsp?' + Ext.urlEncode({'bid_vendor': Ext.getCmp('txtBidVendor').value}),
reader: {
type: 'json',
root: 'data',
successProperty: 'success'
}
},
autoLoad: true
})
},
我收到错误:“无法读取未定义的属性'值',在我尝试获取”Ext.getCmp('txtBidVendor')的行中。值“
答案 0 :(得分:1)
关于你在这里想要完成的事情,我有两点需要考虑:
这里的错误是你在定义时试图访问 txtBidVendor 组件(它不存在),当你发送一个配置对象时(比如这两个组合框) )你实际上没有创建它们,只是设置了它的父级将用于以后实例化的初始配置。
我认为您要做的是在 txtBidVendor 组合框中选择更改时更改商店的查询参数值。要实现这一点,您必须侦听第一个组合框的选择事件,然后修改并重新加载第二个组合的商店。这样的事情:
{ xtype: 'combobox', displayField: 'vendor_name',> emptyText: 'Choose vendor...', selectOnFocus: true, fieldLabel: 'Vendor Name', id: 'txtBidVendor', store: vendorStore, listeners: { select: function (combo, records, eOpts) { var record = records[0]; // just want the first selected item rateStore.getProxy().extraParams.bid_vendor = record.get('vendor_name'); alert('Store will load now with bid_vendor =' + record.get('vendor_name')); rateStore.load(); } } }
为了便于阅读,最好从组件定义本身中取出商店定义。在这里,您可以找到working sample of it。
希望它有所帮助。