2011-06-14 51 views
1

我有这样的代码:ExtJS的组合框 - 选择器不会改变

var comboStore = new Ext.data.Store({ 
proxy : new Ext.data.HttpProxy({ 
    url : '../cxf/rest/CustomerService/getGroups' 
}), 
reader : new Ext.data.JsonReader({ 
    fields : [ 'id', 'name' ] 
}), 
autoLoad : true 
}); 

var groupsCombo = new Ext.form.ComboBox({ 
name : 'GroupsCombo', 
fieldLabel : 'Groups', 
mode : 'local', 
store : comboStore, 
displayField : 'name', 
triggerAction : 'all', 
valueField : 'groupID', 
selectOnFocus:true, 
width : 130 
}); 

当页面加载的值在组合框中成功地填充。 但是,当我试图从组合中选择一个值时,总是选择第一个值。我在这里不是以编程方式说话,但即使在浏览器中,也会选择第一个值。

谢谢

+0

对不起:S 我不知道我怎么没注意到这一点,但在JSON数据存储中的ID应群ID“身份证”的istead .. 我改变了这一点,它的工作现在。 – Ticker23 2011-06-14 14:29:02

+0

添加您的答案并将其标记为已接受,以便具有类似问题的人可以看到您如何解决它 – JamesHalsall 2011-06-15 13:37:52

+0

我想..但是有一些时间限制来回答您自己的问题 – Ticker23 2011-07-06 18:05:15

回答

1

抱歉:S我不知道我没有注意到这一点,但Json数据存储中的id应该是groupID istead'id'..我改变了这一点,它现在工作。

0

您是否尝试过使用JsonStore?尝试做这样的事情:

var comboStore = new Ext.data.JsonStore({ 
     id: 'JsonStore', 
     idProperty: 'id', 
     autoLoad: true, 
     idProperty: 'id', 
     root: <root of your JSON>, 
     fields: [ 'id', 'name' ], 
     proxy: new Ext.data.ScriptTagProxy({ 
      api: { 
       read: '../cxf/rest/CustomerService/getGroups', 
      } 
     }) 
    }); 

然后使用它是商店为ComboBox。 JsonStore会自动创建一个JsonReader,我认为这是您的代码中的冲突。