asp.net中TreeView非同步消極式載入

來源:互聯網
上載者:User

   在使用TreeView控制項的時候,如果資料量太大,這個TreeView控制項載入會很慢,有時甚至載入失敗,

為了更好的使用TreeView控制項載入大量的資料,採用非同步消極式載入TreeView。

在TreeView每個結點的前面都有個"+"號,點擊這個”+“號觸發的事件是OnTreeNodeExpanded="TreeView1_TreeNodeExpanded" ,在剛開始載入TreeView的時候,如果結點下面

還有子節點的話,只載入一個子節點;在點擊”+“號,觸發OnTreeNodeExpanded事件的時候,再載入該結點下的

所有子節點,這樣速度就很快了。

 

1、前台的顯示TreeView代碼如下:


<asp:TreeView ID="TreeView1" runat="server" Font-Size="Medium" OnTreeNodeExpanded="TreeView1_TreeNodeExpanded" ForeColor="LightSlateGray" LeafNodeStyle-ForeColor="#3333ff" ShowLines="true" ExpandDepth="1"><br /> <SelectedNodeStyle CssClass="selectNode" /><br /> </asp:TreeView>

註明:可以通過selectNode控制選擇結點的背景顏色。

 

2、背景TreeNodeExpanded事件代碼如下:

 

protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)<br /> {<br /> //只顯示當前結點的子節點,其他結點閉合<br /> TreeNodeCollection tnc = null;<br /> if (e.Node.Parent == null)<br /> {<br /> tnc = ((TreeView)sender).Nodes;<br /> }<br /> else<br /> tnc = e.Node.Parent.ChildNodes;<br /> foreach (TreeNode node1 in tnc)<br /> {<br /> if (node1 != e.Node)<br /> {<br /> node1.Collapse();<br /> }<br /> }<br /> TreeNode node = (TreeNode)e.Node;<br /> //其中tempNodeInfo包括結點的資訊<br /> string tempNodeInfo = node.Value;<br /> if (!tempNodeInfo.StartsWith("-1"))<br /> {<br /> //先將上次綁定的一個節點資訊刪除掉<br /> node.ChildNodes.Clear();<br /> string[] tempNodeFlag = tempNodeInfo.Split(',');<br /> if (tempNodeFlag[2].ToString().Equals("小區號"))<br /> {<br /> PopulateTreeViewFromFloorName("1", node, Convert.ToInt32(tempNodeFlag[4]), "1");<br /> }<br /> else if (tempNodeFlag[2].ToString().Trim().Equals("樓號"))<br /> {<br /> PopulateTreeViewFromUnit("2", node, Convert.ToInt32(tempNodeFlag[4]), Convert.ToInt32(tempNodeFlag[5]), "1");<br /> }<br /> else if (tempNodeFlag[2].ToString().Trim().Equals("單元號"))<br /> {<br /> PopulateTreeViewFromRoomUserTree("3", node, Convert.ToInt32(tempNodeFlag[4]), Convert.ToInt32(tempNodeFlag[5]), Convert.ToInt32(tempNodeFlag[6]), "1");<br /> }<br /> }<br /> }

註明:其中的PopulateTreeViewFromFloorName、PopulateTreeViewFromUnit、

PopulateTreeViewFromRoomUserTree的第四個參數”1“是TreeView1_TreeNodeExpanded事件觸發

的標誌位,根據這個標誌位消極式載入。

通過這樣的思路就可以實現非同步消極式載入的效果。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.