微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐