jsRender将行转移到列 - 以列显示数据

时间:2012-09-18 12:49:42

标签: asp.net pivot jsrender jsviews

我正在使用jsRender,我希望将数据显示为列而不是我返回的行。我想转移数据 - 这是可以用jsRender完成的。我无法在SQL中获取数据,所以我唯一的选择就是自己动手。

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


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


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


更多等等行数据|行数据|行数据


我曾尝试将{{for}}循环用于表格单元格,但我不知道从哪里开始。

更新: 在Boris的建议之后,我尝试了建议的代码。虽然我没有正确格式化,但我已将其包含在此处。

这是我的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 个答案:

答案 0 :(得分: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"]