让Ext的Grid能加载页面的xml串

项目遇到特殊需求:页面上有一个applet,负责取一些客户机上的数据到页面。这些数据格式是xml字符串。

页面上用js读到这些xml串后,需要显示到Ext 的gird中。

问题来了:无论在Ext的例子中还是文档中,Grid的store加载的xml信息都是以xml文件存在的。页面上的只有array或者json格式数据的才被store认可,没有直接加载的xml串或者dom对象的。

后来去extjs官方论坛找到了答案,解决办法就是自己把xml串封装成dom对象,然后用Ext.data.MemoryProxy做代理

摘录如下:

 

//load XML as string
var strXML = "<Tags></Tags>";
var xmlObject;

   
//load XML string code for IE
if (window.ActiveXObject)
  {
  
var doc=new ActiveXObject("Microsoft.XMLDOM");
  doc.async
="false";
  doc.loadXML(strXML);
  }
//load XML string code for Mozilla, Firefox, Opera, etc.
else
  {
  
var parser=new DOMParser();
  
var doc=parser.parseFromString(strXML,"text/xml");
  }
  
xmlObject 
= doc.documentElement;

//

    
var dataStore = new Ext.data.Store({
         
        proxy: 
new Ext.data.MemoryProxy(xmlObject),
       
        reader: 
new Ext.data.XmlReader({
               record: 
'Item',
               id: 
'ItemID'
           }, [
               
'Cat1''Cat2''Cat3''Cat4'
           ])
    });

//etc. etc.
posted @ 2010-05-06 00:47  貔貅  阅读(254)  评论(0编辑  收藏  举报