2013-12-18 3 views
0

Я работаю с ExtJS для генерации дерева. Это требует JSON в следующем формате:Создание JSON из DataSet

{ "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 является:

текст                                 видны           лист           расширен
Billing                                               истинная         ложные
продаж                                               правда         ложные
оборудование                               истинная         ложные
Процесс                                       истинные         ложные

Все записи с видимыми = '1' должны быть сгенерированы в соответствии с 'Visible' узла и всех записей с видимыми = '0' должны быть сгенерированы в соответствии с ' Невидимый "узел. Я просто не могу создать JSON. Как сгенерировать его в вышеупомянутом формате?

+0

Что у вас до сих пор? Взгляните на linq на dataset 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; 
Смежные вопросы