首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ExtJS网格中处理不可预测的XML数据

在ExtJS网格中处理不可预测的XML数据
EN

Stack Overflow用户
提问于 2010-11-02 23:05:44
回答 1查看 502关注 0票数 0

我正在使用带有XMLReader的ExtJS在GridPanel中显示内容。这可以很好地工作,但是我的XML源代码具有不可预测的重复元素数量:

代码语言:javascript
复制
<beamline> 
  <technique>Tomography</technique> 
  <technique>Phase contrast imaging</technique> 
  <technique>Microdiffraction</technique> 
  <technique>General diffraction</technique> 
</beamline>

可能有0-30个<technique>元素。

目前,我正在使用:nth(n)选项在XMLReader中手动提取这些内容:

代码语言:javascript
复制
{name: 'technique1', mapping: 'technique:nth(1)'},
{name: 'technique2', mapping: 'technique:nth(2)'},

然后将这些作为列放置在面板中,并与渲染器函数连接:

代码语言:javascript
复制
{header: "Technique", width: 100, dataIndex: 'technique1', sortable: false, renderer: techniques},
{header: "Technique2", dataIndex: 'discipline2', hidden: true},

function techniques(val, x, store){
  return '<ul><li>'+val+'</li><li>'+store.data.technique2+'</li></ul>';
}

但这显然太笨拙了,无法扩展。有没有通用的(循环或XPath风格的)方法来实现类似的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-11 18:52:36

我没有使用过XML阅读器,但是我遇到了一个类似的问题,我必须显示一行,其中一列可以包含N个项目。

假设techniques列包含一个对象数组,您可以将其呈现为

代码语言:javascript
复制
function techniquesRenderer(val){
   var returnValue = '<ul>';
   for(var v in val){
     var foo = val[v];
     returnValue += '<li>' + foo.someProperty + '</li>';
   }
   return returnValue += '</ul>
}

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4078984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档