2013-02-20 32 views
0

我有一個treeview我用來顯示目錄結構。我正試圖通過在節點擴展上加載子節點來減少加載時間。有沒有辦法做到這一點?ASP.NET TreeView + AJAX

下面是我目前使用填充樹視圖中的代碼:

protected void Page_Load(object sender, EventArgs e) { 
    BuildTree(Request.QueryString["path"]); 
} 
private void BuildTree(string dirPath) 
{ 
    //get root directory 
    System.IO.DirectoryInfo rootDir = new System.IO.DirectoryInfo(dirPath); 

    //create and add the root node to the tree view 
    TreeNode rootNode = new TreeNode(rootDir.Name, rootDir.FullName); 
    TreeView1.Nodes.Add(rootNode); 

    //begin recursively traversing the directory structure 
    TraverseTree(rootDir, rootNode); 
} 
private void TraverseTree(System.IO.DirectoryInfo currentDir, TreeNode currentNode) 
{ 
    //loop through each sub-directory in the current one 
    foreach (System.IO.DirectoryInfo dir in currentDir.GetDirectories()) 
    { 
      //create node and add to the tree view 
      TreeNode node = new TreeNode(dir.Name, dir.FullName); 
      currentNode.ChildNodes.Add(node); 

      //recursively call same method to go down the next level of the tree 
      TraverseTree(dir, node); 
    } 

    foreach (System.IO.FileInfo file in currentDir.GetFiles()) 
    { 
     TreeNode node = new TreeNode(file.Name, file.FullName); 
     currentNode.ChildNodes.Add(node); 
    } 
} 
+0

@RenanMalkeStigliani你能否解釋一下? – 2013-02-20 21:37:39

+0

你的問題太抽象了,提供更多細節,就像你目前用來加載樹視圖的任何框架JavaScript;樹視圖代碼和你得到的項目數量。 – RMalke 2013-02-20 21:42:42

回答

0

對於裝載需求的節點,這意味着一個節點的孩子當父節點展開將只加載。執行以下步驟:

1 - 將TreeView.ExpandDepth設置爲。這消除了在TreeView添加TreeNode物體的膨脹和示出了展開符號[+]旁邊具有TreeNode.PopulateOnDemand屬性設置爲真每個TreeNode

2-設置爲TreeNode.PopulateOnDemand每個分支TreeNode。當TreeNode.ChildNodes收集,擴展符號[+]將僅次於擁有TreeNode.PopulateOnDemand屬性設置爲真正TreeNode對象顯示。

3-處理TreeView.TreeNodePopulate事件以在擴展上爲分支節點鋪路。 TreeNode - TreeNode.PopulateOnDemand設置爲true - 已在TreeView.TreeNodeExpanded事件啓動之前展開,此事件將被觸發。

來源:ASP.NET TreeView and loading data on demand