【问题标题】:jsRender pivot rows to columns - display data in columnsjsRender 将行转为列 - 在列中显示数据
【发布时间】:2012-09-18 12:49:42
【问题描述】:

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

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


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


专栏废话|行数据 |行数据 |行数据


更多废话|行数据 |行数据 |行数据


我曾尝试对表格单元格使用 {{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>

【问题讨论】:

    标签: asp.net pivot jsrender jsviews


    【解决方案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"]

    【讨论】:

    • 我认为会是这样。但是,我的来源是来自具有属性的 SQL Server 数据库的 XML。当我将 XML 转换为 JSON 字符串时,我将所有内容都放在引号中。所以我的属性是“@LayerNo”
    • 这是我的 JSON 字符串的 sn-p。 “MyData”:{“Row”:[{“@RowID”:“1”,“Column1”:{“@ColVal”:“合同/节编号”,“#text”:“PUSNA11000392/1”},“ Column2": { "@ColVal": "New、Renewal 还是 NTU?", "#text": "New" },
    • 啊,你在原来的问题中没有这么说。已更新答案以帮助您处理这些特殊字符...
    • 道歉鲍里斯。感谢更新。我会去的。你可以想象我一直在尝试其他解决方案,所以我在不同的方法之间快速切换。我会将其标记为已回答 - 希望尽快对此进行测试。再次感谢您的帮助:-)
    • @ArminderDahul - 我看到您从未将此回复标记为“已接受”。这样做可能很好......
    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2021-11-24
    相关资源
    最近更新 更多