Silverlight 使用RadTreeView动态绑定数据

在使用Telerik公司的RadTreeView控件时,再异步调用WebService时,关于嵌套循环调用导致的阻塞现象,后来使用一次获取WS数据,加载后通过LINQ来分类操作,避免了此种情况。



        #region 点击县名后,动态加载该县的所有实时险情类别信息及类别下的所有实时险情

        RadTreeViewItem selectedItem = null;
        //选中时动态绑定
        private void RadTreeView1_Selected(object sender, Telerik.Windows.RadRoutedEventArgs e)
        {
            RadTreeView source = sender as RadTreeView;
            selectedItem = source.SelectedItem as RadTreeViewItem;
            if (!selectedItem.HasItems)
            {
                getTreeSoapClient client = new getTreeSoapClient();

                //实时险情列表
                client.getSSQXListCompleted += new EventHandler<getSSQXListCompletedEventArgs>(client_getSSQXListCompleted);
                client.getSSQXListAsync(selectedItem.Header.ToString().Trim());
            }
        }

        //实时险情类别
        RadTreeViewItem targetTreeNode = null;
        //实时险情名称
        void client_getSSQXListCompleted(object sender, getSSQXListCompletedEventArgs e)
        {
            IList<SSXQ> xqList = e.Result;
            List<string> type = xqList.Select(p => p.灾情类型).Distinct().ToList();
            foreach (string s in type)
            {
                targetTreeNode = new RadTreeViewItem();
                targetTreeNode.Header = s;
                targetTreeNode.IsExpanded = true;
                selectedItem.Items.Add(targetTreeNode);
                IList<SSXQ> list = (from li in xqList
                                    where li.灾情类型 == s
                                    select li
                                  ).ToList<SSXQ>();
                if (list.Count > 0)
                {
                    foreach (SSXQ xq in list)
                    {
                        RadTreeViewItem objTreeNode = new RadTreeViewItem();
                        objTreeNode.Header = xq.图片标题;
                        objTreeNode.Tag = xq.OBJECTID;
                        objTreeNode.DataContext = xq;
                        objTreeNode.IsExpanded = true;
                        targetTreeNode.Items.Add(objTreeNode);
                    }
                }
            }

            //设置拖拽操作
            //objTreeNode.Drag(objTreeNode.Header, null, (s, ex) =>
            //{
            //    Point p = ex.GetPosition(this.container);
            //    if (p.X > 0 && p.X < this.container.Width && p.Y > 0 && p.Y < this.container.Height)
            //        this.container.Children.Add(new RadTreeViewItem() { Header = (s as ContentControl).Content.ToString() });
            //});
        }
        #endregion


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值