webForumDet fria alternativet

Kört fast med treeview iterera

.NET

3 svar · 594 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Jag försöker att få med alla mappar och undermappar som finns i mappen bild.

 webbPath = Webbutill.App_Path() +"Bild";
DirectoryInfo modermapp = new DirectoryInfo(webbPath);
             DirectoryInfo[] undermappar = modermapp.GetDirectories();
             TreeView1.Nodes.Clear();
             TreeNode root = new TreeNode();
             root.Text = "Alla album";
             TreeView1.Nodes.Add(root);
             foreach (DirectoryInfo mapp in undermappar)
             {
                 TreeNode node = new TreeNode();
                 node.Text = mapp.Name;
                 node.Value = mapp.Name;
                 node.SelectAction = TreeNodeSelectAction.Select;
                 root.ChildNodes.Add(node);
             }
             TreeView1.ExpandAll();

Så långt inga problem, men jag kommer inte på, och hittar inte heller hur jag skall få med undermapparna??? :stud

Medlem sedan mars 20011 880 inlägg
#2

Jag har nu lyckats med att göra en rekusiv konstruktion för att ladda treeview'n, men det ser lite konstigt ut när man titta på bilden.

 webbPath = Webbutill.App_Path() +"Bild";
DirectoryInfo modermapp = new DirectoryInfo(webbPath);
             DirectoryInfo[] undermappar = modermapp.GetDirectories();
             foreach (DirectoryInfo mapp in undermappar)
             {
                 TreeNode root = new TreeNode();
                 root.Text = mapp.Name;
                 TreeView1.Nodes.Add(root);
                 DirectoryInfo modermappen = new DirectoryInfo(webbPath + @"\" + mapp.Name);
                 DirectoryInfo[] nyaundermappar = modermappen.GetDirectories();
                 foreach (DirectoryInfo mappar in nyaundermappar)
                 {
                     TreeNode node = new TreeNode();
                     node.Text = mappar.Name;
                     node.Value = mappar.Name;
                     node.SelectAction = TreeNodeSelectAction.Select;
                     root.ChildNodes.Add(node);
                 }
             }

Som ni ser så ligger det i olika nivåer..
Hur bör jag göra för att få till det snyggare? :stud

treeview.png
Medlem sedan mars 20011 880 inlägg
#3

Med några små förändringar så fixade det till sig

webbPath = Webbutill.App_Path() +"Bild";
DirectoryInfo modermapp = new DirectoryInfo(webbPath);
             DirectoryInfo[] undermappar = modermapp.GetDirectories();
             TreeNode root = new TreeNode();
             root.Text = "Album";
             TreeView1.Nodes.Add(root);
             foreach (DirectoryInfo mapp in undermappar)
             {
                 TreeNode tnode = new TreeNode();
                 tnode.Text = mapp.Name;
                 TreeView1.Nodes[0].ChildNodes.Add(tnode);
                 DirectoryInfo modermappen = new DirectoryInfo(webbPath + @"\" + mapp.Name);
                 DirectoryInfo[] nyaundermappar = modermappen.GetDirectories();
                 foreach (DirectoryInfo mappar in nyaundermappar)
                 {
                     TreeNode node = new TreeNode();
                     node.Text = mappar.Name;
                     node.Value = mappar.Name;
                     node.SelectAction = TreeNodeSelectAction.Select;
                     tnode.ChildNodes.Add(node);
                     tnode.Collapse();
                 }
             }

Genom att sedan ändra på

node.value
//till
 node.Value = webbPath + @"\" + mapp.Name + @"\" + mappar.Name;

så fick jag hela sökvägen. :P

Medlem sedan mars 20011 880 inlägg
#4

Men, hur får jag en node att fortsätta att vara expanderad, inte alla utan den jag senast klickade på

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)