在ExtJS中使用XML加载Combobox

时间:2012-07-26 18:53:02

标签: javascript extjs extjs3

我想用XML加载组合框,但我无法在组合框中获取任何值, 这是我到目前为止所做的事情

var getMessageDomain = function () {
    var store = new Ext.data.Store({
        url: 'zport/getDomainFilters',
        autoLoad: true,
        reader: new Ext.data.XmlReader({
            record: 'Domain'
        }, [{
            name: 'name',
            mapping: '@name'
        }, ])
    });
    var combo = new Ext.form.ComboBox({
        width: 250,
        xtype: 'combo',
        mode: 'local',
        allowBlank: false,
        triggerAction: 'all',
        forceSelection: true,
        editable: false,
        fieldLabel: 'Message Domain',
        name: 'titlez',
        hiddenName: 'titlez',
        displayField: 'name',
        valueField: 'name',
        editable: false,
        store: store
    });
    return combo;
};

和我的xml是这样的:

<TDSmessagedomain xmlns="">
  <Domain name="AEPL" /> 
  <Domain name="APAP" /> 
  <Domain name="BCP" /> 
  <Domain name="BTCI" /> 
  <Domain name="BGSET" /> 
  <Domain name="COLLCLIENT" /> 
  <Domain name="COLLINT" /> 
  <Domain name="CPL" /> 
  <Domain name="DBWS" /> 
.........................

1 个答案:

答案 0 :(得分:1)

1)我鼓励您使用XmlStore,它将自动为您配置XmlReader。

var store = new Ext.data.XmlStore({
    autoLoad: true,
    url: 'zport/getDomainFilters',
    fields: ['name'],
    record: 'Domain'
});

2)这是未经测试的,但我认为您需要稍微修改XML结构。我不知道它是否会在记录标识符中查找属性。

<TDSmessagedomain xmlns="">
  <Domain>
    <name>AEPL</name>
  </Domain>
  <Domain>
    <name>APAP</name>
  </Domain>
</TDSmessagedomain>