2012-09-18 67 views
0

我使用jsRender,我想将数据显示为列而不是我返回的行。我想旋转数据 - 这是可以用jsRender完成的事情。我无法在SQL中获取数据,所以我唯一的选择是自己做。jsRender将行数据透视到列 - 显示列中的数据

这基本上就是我所追求的。我想自己写列名。


标题|第1行|第2行|第3行|


Column Blah |行数据|行数据|行数据


更多blah |行数据|行数据|行数据


我试过对表格单元格使用{{for}}循环,但我不知道从哪里开始。

更新: 鲍里斯的建议后,我尝试了建议的代码。尽管我没有正确格式化,但我已将它包含在这里。

这是我的JSON源的摘录:

{ 
    "Layers": { 
    "Layer": [ 
     { 
    "@LayerID": "1", 
    "RiskRef": { 
     "@ColVal": "Contract/Section Number", 
     "#text": "PUSNA11000392/1" 
    }, 
    "ContractStatus": { 
     "@ColVal": "New, Renewal or NTU?", 
     "#text": "New" 
    }, 
    "AdjustRate": { 
     "@ColVal": "Adjustable Rate", 
     "#text": "0.53%" 
    }, 

而且我jsRender JavaScript代码:

<script id="xolDetailsTemplate" type="text/x-jsrender"> 
      {{for Layers}} 
       {{for >#data["Layer"]}} 
       <td>{{>#data["@LayerID"]}}</td> 
       {{/for}} 
      {{/for}} 
</script> 

回答

1

如果你的数据是 model = { people: [{firstName: "Jo", lastName: "Colby"}, ...] }

您可以使用下面的模板渲染人物阵列,将行转为列:

<tbody> 
    <tr><td>First Name</td>{{for people}}<td>{{>firstName}}</td>{{/for}}</tr> 
    <tr><td>Last Name</td>{{for people}}<td>{{>lastName}}</td>{{/for}}</tr> 
</tbody> 

在你的评论下面你说你的数据有像“@foo”这样的字段名称。让我们考虑这个例子: model = { "people": [{"@firstName": "Jo", "@lastName": "Colby"}}, ...] }

您可以按如下使用模板呈现此:

<tbody> 
    <tr><td>First Name</td>{{for people}}<td>{{>#data["@firstName"]}}</td>{{/for}}</tr> 
    <tr><td>Last Name</td>{{for people}}<td>{{>#data["@lastName"]}}</td>{{/for}}</tr> 
</tbody> 

如果字段名称中包含非JavaScript的名称中的字符,如“@”,这正是你需要使用的语法#data["@xxx"]

+0

我以为会是这样。但是我的源代码是来自具有属性的SQL Server数据库的XML。当我将XML转换为JSON字符串时,我将所有内容都放在引号中。所以我的属性是“@LayerNo” –

+0

这是我的JSON字符串的片段。 “迈德特”:{ “行”:[{ “@RowID”: “1”, “column1的”:{ “@ColVal”: “合同/节号”, “#text”: “PUSNA11000392/1” }, “列2”:{ “@ColVal”: “新建,重建或NTU?”, “#text”: “新” }, –

+0

啊,你没有说,原来的问题。答案更新,以帮助您处理这些特殊字符... – BorisMoore