0

我正在使用 ExtJS,并使用 SOAPClient 进行了服务调用,如下所示:

var url2 = "https://serviceUrlGoesHere/MyService";

var pl = new SOAPClientParameters();    
pl.add("arg0", false);

SOAPClient.invoke(url2, "getPaymentsMethod", pl, true, getDataCallback);

我的回复方法:

function getDataCallback(response) {
    ???
};

这是服务响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <dlwmin:getPaymentsMethod xmlns:dlwmin="http://blahblah.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <return>
            <contents>
               <eftAcctNo>501014635986</eftAcctNo>
               <eftAcctRoutNo>122400724</eftAcctRoutNo>
            </contents>
            <contents>
               <eftAcctNo></eftAcctNo>
               <eftAcctRoutNo></eftAcctRoutNo>
            </contents>
            <contents>
               <eftAcctNo></eftAcctNo>
               <eftAcctRoutNo></eftAcctRoutNo>
            </contents>
            <status>0</status>
         </return>
      </dlwmin:getPaymentsMethod>
   </soapenv:Body>
</soapenv:Envelope>

我的问题是......如何将此数据添加到模型并填充数据网格?

4

2 回答 2

0

这是对我有用的答案:

var url2 = "https://serviceUrlGoesHere/MyService";

var pl = new SOAPClientParameters();    
pl.add("arg0", false);

SOAPClient.invoke(url2, "getPaymentsMethod", pl, true, this.getDataCallback);



getDataCallback: function (req, r) {
    var store = Ext.getStore('STORENAMEHERE');
    store.loadRawData(r);
    store.sync();
}

通过执行 loadRawData,它将数据加载到 Store 中,并且我的 Grid 能够成功加载数据。

于 2013-08-02T19:06:20.730 回答
0

这是一个如何加载商店的示例,在此之后填充数据网格应该非常简单,因为您可以处理网站上的示例之一:

Ext.define("YourModel", {
    extend: "Ext.data.Model",
    fields: [
        {name:"eftAcctNo",     type:"int"},
        {name:"eftAcctRoutNo", type:"int"}
    ]
});

var store = Ext.create('Ext.data.Store', {
    autoLoad: false,
    model: 'YourModel',
    proxy: {
        type: 'memory',
        reader: {
            type: 'xml',
            root: 'return'
        }
    }
});

function getDataCallback(response) {
    store.loadData(response.reponseText);// or just response if that is already text in your case
};
于 2013-07-12T21:16:20.900 回答