日期:2014-05-17  浏览次数:20912 次

c/s的treeview转换成json

纠结在格式了
现在能把所有节点取出来,但是 节点格式深度不会计算了。求高人。怎么来做深度!


        private void AllNode(TreeNode Node)
        {

                for (int i = 0; i < Node.Nodes.Count; i++)
                {
                    AllNode(Node.Nodes[i]);
                }
                if (Node.Name != "treZero")
                {
                    strJosn =strJosn+ "\"" + Node.Text + "\":\"" + Node.Tag + "\"," ;
                }


        }

递归代码。。

------解决方案--------------------
Node.Level就是节点深度
------解决方案--------------------
简单的可以定义一个类似下面的类

public class SerializeNode
{
  public string Name{get;set;}
  List<SerializeNode> Nodes{get;}
}


赋值后直接用Json.Net序列化和反序列化即可
------解决方案--------------------
直接上代码吧。


  public class Tree
    {
        /// <summary>
        /// 树的深度
        /// </summary>
        public int Depth { get; set; }
        /// <summary>
        /// 根结点
        /// </summary>
        public TreeNode Root { get; set; }

        public void AddNode(int parentId, TreeNode insert)
        {
            var parent = FindNode(Root, parentId);
            if (parent == null) return;
            insert.Level = parent.Level + 1;//深度加1
            //在叶子结点下插入
            if (parent.Children == null)
            {
                parent.Children = new List<T