Extjs:动态存储绑定到组合框阵列

时间:2018-02-23 10:49:58

标签: javascript extjs

我是Extjs的初学者,动态地在Extjs中为combobox添加了一系列选项,但组合框中的选项会出现字符串的第一个字符。 代码:

function makeComboBox(){

var ImageCbx = new Ext.form.ComboBox({
    id : cbID,
    queryMode: 'local',
    displayField : 'names',
    valueField: 'names',
    typeAhead : false,
    mode : 'local',
    triggerAction : 'all',
    selectOnFocus : false,
    //editable : true,
    emptyText:'Select...',
    width : 400
});
function rewrite()
{
    var options = params[attach];//options=["apple", "ball", "cat"];
    var store = new Ext.data.SimpleStore({
    fields : ['names'],
    data : options 
    });
    var cbx = Ext.getCmp(cbID);
    cbx.bindStore(store);
}
//output: options in combo box appears with 1st char of strings
a
b
c

//Expected output:
apple
ball
cat

有什么建议吗?我做错了哪里

1 个答案:

答案 0 :(得分:0)

普通的ExtJS存储获取对象,而不是字符串。

因为您使用商店字段"名称"作为displayField,您要添加的数据必须采用以下格式:

a = df.resample('M').max()
b = a.xs('c2', axis=1, level=1)
c = a.xs('c3', axis=1, level=1)
d = b - c
print (d)
                  g1        g2
2017-01-31  0.909464  1.638375
2017-02-28  0.698516  0.338194

您可以使用以下代码获取:

[{ names: "apple" },{names: "ball"}, {names: "cat"}]

您正在使用" SimpleStore"它也称为"ArrayStore",因为它需要数组(而不是字符串)。

在这种情况下,您必须将字符串包装到数组中,因此请使用以下代码:

data: options.map(function(option) {
    return {names: option};
})

这也告诉我们为什么你的商店显示第一个字符 - 字符串是一个数组,每个字符都是数组的一个元素。