2013-12-18 126 views
0

我正在使用ExtJS來生成樹。它需要JSON的格式如下:從數據集生成JSON

{ "children": [{ 
     "text": "Invisible", 
     "expanded": true, 
     "children": [{ 
      "text": "Billing", 
      "leaf": true 
     }, { 
      "text": "Sales", 
      "leaf": true 
     }] 
    }, 
    { 
     "text": "Visible", 
     "expanded": true, 
     "children": [{ 
      "text": "Equipment", 
      "leaf": true 
     }, { 
      "text": "Process", 
      "leaf": true 
     }] 
    }] 
} 

結果我在DataSet是:

文本                               可見         葉子         膨脹
帳單                                             真       假
銷售                                             真正       假
設備                             真       假
過程                                     真       假

所有可見=「1」應該在「可見」節點來生成和可見=「0」應在'生成的所有記錄的記錄隱形'節點。我只是無法生成JSON。如何以上述格式生成它?

+0

你有什麼這麼遠嗎?看看linq數據集http://msdn.microsoft.com/en-us/library/bb386910(v=vs.110).aspx – crad

+0

謝謝。我用它來創建一個複雜的類型。如果有人需要,我發佈解決方案。 – user1640256

回答

0

我創建了一個類,如下所示:

public class TreeNode 
{ 
    public string text { get; set; } 
    public bool leaf { get; set; } 
    public bool expanded { get; set; } 
    public List<TreeNode> children { get; set; } 

    public TreeNode() 
    { 
     leaf = false; 
     expanded = true; 
     children = new List<TreeNode>(); 
    } 
} 

基於數據集返回我創建的對象,如下所示:

List<TreeNode> treeNodeList = new List<TreeNode>(); 
      treeNodeList.Add(new TreeNode 
      { 
       text = "Invisible", 
       expanded = true, 
       leaf = false 
      }); 
      treeNodeList.Add(new TreeNode 
      { 
       text = "Visible", 
       expanded = true, 
       leaf = false 
      }); 

      if (ds.Tables.Count > 0) 
      { 
       for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
       { 
        treeNodeList[0].children.Add(new TreeNode 
             { 
              text = ds.Tables[0].Rows[i][0].ToString(), 
              leaf = true 
             }); 
       } 
      } 

      if (ds.Tables.Count > 1) 
      { 
       for (int i = 0; i < ds.Tables[1].Rows.Count; i++) 
       { 
        treeNodeList[1].children.Add(new TreeNode 
        { 
         text = ds.Tables[1].Rows[i][0].ToString(), 
         leaf = true 
        }); 
       } 
      } 
      return treeNodeList;