将Json格式数据绑定显示在TreeView控件中(工作记录)

本例子只是单纯的实现了工作中的功能,只能针对个别吧,如有错,莫见怪,谢谢。

  #region 绑定TreeView控件

        private void InitCountSignScopeJson()
        {
            NetWorkClient.StrCallBack callBack = delegate(String str)
            {
                if (str != null)
                {
                    JArray orgAndPerson = (JArray)JsonConvert.DeserializeObject(str);

                    CreateTreeView(orgAndPerson);

                }
            };

            NetWorkClient.FetchStrFromShortUrl(UrlConstants.FetchOrgAndPerson, callBack);
        }
        /// <summary>
        /// 将获取到的数据绑定到TreeView中
        /// </summary>
        /// <param name="orgAndPerson">Json格式数据</param>
        /// <param name="tv">父节点</param>
        private void CreateTreeView(JArray orgAndPerson)
        {
            // 遍历父节点
            foreach (var parent in orgAndPerson.Children())
            {
                TreeViewItem tvParent = new TreeViewItem();
                ListBoxItem libParent = new ListBoxItem();
                //只有转换成JObject,才能访问Properties()属性
                JObject parentValue = parent as JObject;

                // 遍历父节点的属性
                foreach (var proParent in parentValue.Properties())
                {
                    if (proParent.Name.Equals("name"))
                        tvParent.Header = proParent.Value;
                }

                // 遍历父节点的子节点
                if (parentValue["children"] != null)
                {
                    foreach (var child in parent.Last.Children())
                    {
                        JArray childValue = child as JArray;

                        //调用遍历子节点函数
                        SubNodes(tvParent, childValue);
                    }
                }

                tvCountsignScope.Items.Add(tvParent);
            }
        }

        /// <summary>
        ///遍历子节点
        /// </summary>
        private void SubNodes(TreeViewItem tvParent, JArray childOrgPerson)
        {
            // 遍历子节点
            foreach (var child in childOrgPerson.Children())
            {
                JObject childValue = child as JObject;
                TreeViewItem tvChild = new TreeViewItem();

                if (childValue != null)
                {
                    // 遍历子节点的属性
                    foreach (var proChild in childValue.Properties())
                    {
                        if (proChild.Name.Equals("name"))
                            tvChild.Header = proChild.Value;
                    }

                    tvParent.Items.Add(tvChild);
                }

                if (child["children"] != null)
                {
                    foreach (var childSub in child.First.Children())
                    {
                        JArray childSubValue = childSub as JArray;

                        if (childSubValue != null)

                            //递归调用子节点
                            SubNodes(tvChild, childSubValue);
                    }

                }
            }
        }

 

posted on 2013-06-09 09:56  Duonet 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/duonet-Blog/archive/2013/06/09/3128062.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值