我的ExtJS 4.2.1
表格带有combobox
。
xtype: 'container',
width: 360,
items: [{
xtype: 'combobox',
fieldLabel: 'Shift Code',
name: 'ShiftCode',
store: Ext.create('SoftHuman.store.catalog.ShiftCode'),
blankText: ' ',
allowBlank: false,
displayField: 'Description',
valueField: 'ShiftCode'
}]
单击触发器图标时的组合它将从商店获取数据,然后显示项目,如下图所示。
我想要做的是在加载表单时在组合中设置值和显示值,然后如果用户单击以展开组合,则商店将像现在一样远程获取项目。
这是因为我有25个组合的这个表单,我不想在显示表单之前加载它们然后分配每个组合值,因为用户不会更改所有组合值,也许他只会更改2或3,因此最初加载它们没有意义,但我想从我的记录中显示组合中的显示值。
有任何线索吗?
答案 0 :(得分:3)
您可以在商店中插入默认值并将其设置为值
combo.getStore().insert(0, { "valueField": 0, "DisplayField": "All Properties" }, true);
combo.setValue(0);
答案 1 :(得分:1)
你缺少的是 queryMode:' remote':
来自sencha docs
在queryMode:' remote'中,ComboBox根据用户交互动态加载其商店。
这通常用于"自动完成"输入类型,用户完成输入后,将加载存储。
在加载请求中发送包含类型化字符串的参数。输入字符串的默认参数名称是query,但可以使用queryParam config配置它。
在queryMode:' remote'中,可以使用remoteFilter:true配置存储,并且可以以编程方式将其他过滤器添加到存储中,然后随每个加载请求一起传递,这允许服务器进一步细化返回的数据集。
如果您也需要,也可以使用queryDelay。 这是我从代码中提取的一个例子。
{
xtype: 'combo',
itemId: 'totalSearchCombo',
width: 200,
emptyText: 'Total Search',
typeAhead: true,
editable: true,
hideLabel: true,
hideTrigger: true,
store: 'dropDownList_s',
mode:'remote',
displayField: 'display_nm',
anchor: '100%',
matchFieldWidth: false,
listConfig:
{
width: 195,
loadingText: 'Searching...',
emptyText: 'No matching items found, or not enough characters entered.',
getInnerTpl: function () {
var tpl = '<div>{display_nm}</div>';
return tpl;
}
},
//pageSize: 15,
listeners: {
}
}
答案 2 :(得分:-1)
解决方案是设置以下方法:
combo.setValue('here the value');
combo.setRawValue('here the value to display');