使用Sencha 2消耗ASMX服务

时间:2012-03-30 00:10:04

标签: c# asmx extjs sencha-touch-2

我刚开始学习Sencha。

我有一个返回List的asmx,所以xml看起来像;

<Result>
  <string>One</string>
  <string>Two><string>
</Results>

现在,我想做的就是在列表中显示。

所以我的Sench代码看起来像;

Ext.define('ListItem', {
    extend: 'Ext.data.Model',
    config: {
        fields: ['text']
    }
});

var treeStore = Ext.create('Ext.data.TreeStore', {
    model: 'ListItem',
    defaultRootProperty: 'items',
    proxy: {
        type: 'ajax',
        url: 'http://localhost:81/MyASMX.asmx/Test'
    }
});


Ext.application({
    name: 'Sencha',

    launch: function () {
        Ext.create('Ext.NestedList', {
            fullscreen: true,
            store: treeStore,
            detailCard: {
                html: 'You are viewing the detail card!'
            }
        });
    }
});

但是我得到一个空列表,标题栏也是空的。

1 个答案:

答案 0 :(得分:0)

使用.Asmx,您还可以将xml绑定到您的treestore 这是可以帮助你的代码

function BindData(dataxml)
{

   dataxml = dataxml.replace(/&gt;/g, ">");
   dataxml = dataxml.replace(/&lt;/g, "<");
  var doc;
  if (window.ActiveXObject) {         //IE
    var doc = new ActiveXObject("Microsoft.XMLDOM");
    doc.async = "false";
    doc.loadXML(dataxml);
  } else {                             //Mozilla
    var doc = new DOMParser().parseFromString(dataxml, "text/xml");
  }
  var store = new Ext.getStore('treestore');
  store.removeAll();
  var DataLen = doc.getElementsByTagName('FirstNode').length;
     for (var i = 0; i < DataLen; i++) {
    var arrnodename = doc.getElementsByTagName('nodeName')[i].firstChild.nodeValue.replace(/\"/g, '');
  var arrnodename2 = doc.getElementsByTagName('nodeName2')[i].firstChild.nodeValue.replace(/\"/g, '');
    store.add({ C1: arrnodename[0], C2: arrnodename2[0]});
     }
}