2012-10-02 61 views
1

我在JSON架構是新,在我的代碼後面(ASP.Net 3.5),從web方法,我從數據表返回一個數組,如以下:分組JSON DATA

 
ID | Number 
___________ 

1 | 200 
1 | 300 
2 | 400 
2 | 500 
3 | 600 

我我將這個表中的數組返回給JSON對象。
我想要做的是如下使用JQuery構建數據:

<div id="1">ID = 1</div> 
    <div id="11">200</div> 
    <div id="12">300</div> 
</div> 
<div id="2">ID = 2</div> 
    <div id="21">400</div> 
    <div id="22">500</div> 
</div> 
<div id="3">ID = 3</div> 
    <div id="31">600</div> 
</div> 

回答

1

對於渲染本身,我會建議一個JavaScript模板庫,如jsRender。對於JSON格式,你最好的辦法是集團在服務器端的數據,並具有每個屬性包含一個數組,所以你的JSON應該是這樣的:

var data = { 
    "1": ["200", "300"], 
    "2": ["400", "500"], 
    "3": ["600"] 
} 
0

你應該做手工,使用對象將您的價值分組。 說你的JSON對象反序列化到這一點:

var myTable = [{ID: 1, Number:200}, {ID: 1, Number:300}, {ID: 2, Number:400}, {ID: 2, Number:500}, {ID: 3, Number:600}] 

那麼這個代碼將組值:

var myObject = {}; 
$.each(myTable, function() { 
    if (!myObject[this.ID]) myObject[this.ID] = []; 
    myObject[this.ID].push(this.Number); 
} 

那麼你應該建立你的HTML代碼結構...喜歡的東西:

var myHtml = $(""); 
$.each(myObject, function(ID, Numbers) { 
    if (Numbers) { 
     var divId = $("<div></div>").attr("id", ID); 
     $.each(Numbers, function(index, number) { 
      divId.append($("<div></div>").attr("id", ID.toString() + (index+1).toString()).html(number)); 
     } 
     divId.appendTo(myHtml); 
    } 
} 

請注意,在您的問題html無效,它有太多的</div>結束標籤,所以你根據你需要調整代碼。

+0

thnx,讓我試試這個 –