2012-09-18 99 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