Silverlight 使用RadTreeView動態綁定資料

來源:互聯網
上載者:User

在使用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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.