0

私は jsRender を使用しており、データを行ではなく列として表示したいと考えていました。データをピボットしたい - これは jsRender でできることですか。SQL でピボットされたデータを取得できないため、自分で行うしか方法がありません。

これは基本的に私が求めているものです。列名を自分で書きたい。


ヘッダー | 行 1 | 行 2 | 行 3 |


コラムブラ | 行データ | 行データ | 行データ


もっと何とか| 行データ | 行データ | 行データ


テーブル セルに {{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>
4

1 に答える 1

1

If your data is model = { people: [{firstName: "Jo", lastName: "Colby"}, ...] }

you can use the following template to render a people array, pivoted rows to columns:

<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>

In your comment below you say that your data is has field names like "@foo". Lets consider this example: model = { "people": [{"@firstName": "Jo", "@lastName": "Colby"}}, ...] }.

You can render this with a template as follows:

<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>

If the field name has non JavaScript name characters, such as "@" that is where you need to use the syntax #data["@xxx"].

于 2012-09-19T17:36:56.603 に答える