Skip to main content
Home Forums Silverlight Programming Programming with .NET - General tree problem .....
2 replies. Latest Post by hari4u on July 5, 2008.
(0)
hari4u
Member
39 points
78 Posts
07-04-2008 2:47 AM |
hello,
I have a tree control ...
on page load am calling the server and loading it with some nodes ...
later in the code i have one function we the user is allowed to add nodes..
and am successful to do it by sending the id of the parent node and child id and name to the server...
now here i have a problem ...,
after adding the child node i need to ask the server of the information , am getting the information successfully ,
now to refresh the tree with new nodes with the response i got...
in simple i need to fill the tree with the nodes i get the response( which also has the info about previus nodes)...
yen am tryin do tat...
the nodes am getting in the later part are being appended to the previous nodes(first nodes on page load)..
and yen i use tree.nodes.clear()...
before the later reponse i getting an error.. like no node ...
is there any way such tat ..
my tree tries to remove previous nodes and get the new information. as its nodes.
any how am tryin nodes dynamically in my code for both the cases...
If am not clear about my problem plz tell me i'll make it simple...
Thanx in advance,
Hari.
Yi-Lun L...
All-Star
25052 points
2,747 Posts
07-05-2008 12:55 AM |
Hello, you may need to post some code of your Tree Control... Anyway, a typical tree node will have a Children collection property, or maybe it's called ChildNodes, or any names you like. Have you tried to write something like this?
Node node = new Node();
//Populate the new node with data returned from the server.
parentNode.Children.Add(node);
07-05-2008 3:17 AM |
oid FolderInfoRetrieve(string responseString) { string title; string Name; JsonObject root = (JsonObject)JsonObject.Parse(responseString); JsonArray folders = (JsonArray)root["Header"]["context"]["refresh"]["folder"][0]["folder"]; //List<Folder> result = new List<Folder>(); //For each folder in the array, create a new Folder object. foreach (JsonObject jo in folders) { Folder folder = new Folder(); if (jo.Keys.Contains("view")) { folder.View = jo["view"]; } if (jo.Keys.Contains("f")) { folder.F = jo["f"]; } if (jo.Keys.Contains("n")) { folder.N = jo["n"]; } if (jo.Keys.Contains("l")) { folder.L = jo["l"]; } if (jo.Keys.Contains("name")) { folder.Name = jo["name"]; } if (jo.Keys.Contains("s")) { folder.S = jo["s"]; } if (jo.Keys.Contains("u")) { folder.U = jo["u"]; } if (jo.Keys.Contains("id")) { folder.Id = jo["id"]; } if (jo.Keys.Contains("rev")) { folder.Rev = jo["rev"]; } if (folder.U == 0) title = folder.Name; else title = folder.Name + "(" + folder.U + ")"; if (folder.N == 0) Name = folder.Name; else Name = folder.Name + "(" + folder.N + ")"; switch (folder.Name) { case "Inbox": Node newNode = new Node(folder.Id, title, true, "Icon_Inbox.png"); Node InchildNode = null; if (jo.Keys.Contains("folder")) { JsonArray child = (JsonArray)jo["folder"]; foreach (JsonObject j1 in child) { folder.childName = j1["name"]; folder.childId = j1["id"]; InchildNode = new Node(folder.childId, folder.childName, true, "Icon_Folder.png"); newNode.Nodes.Add(InchildNode); InchildNode.ParentNode = newNode; } } tree1.Nodes[0].Nodes.Add(newNode); newNode.MouseLeftButtonDown += new MouseButtonEventHandler(inboxMouseLeftButtonDown); //tree1.Nodes[0].Nodes.Add(childNode); break; case "Sent": Node newNode1 = new Node(folder.Id, folder.Name, true, "Icon_Sent.png"); Node SechildNode = null; if (jo.Keys.Contains("folder")) { JsonArray child = (JsonArray)jo["folder"]; foreach (JsonObject j1 in child) { folder.childName = j1["name"]; folder.childId = j1["id"]; SechildNode = new Node(folder.childId, folder.childName, true, "Icon_Folder.png"); newNode1.Nodes.Add(SechildNode); SechildNode.ParentNode = newNode1; } } tree1.Nodes[0].Nodes.Add(newNode1); newNode1.MouseLeftButtonDown += new MouseButtonEventHandler(sentMouseLeftButtonDown); break; case "Drafts": Node newNode2 = new Node(folder.Id, Name, true, "Icon_Drafts.png"); Node DrchildNode = null; if (jo.Keys.Contains("folder")) { JsonArray child = (JsonArray)jo["folder"]; foreach (JsonObject j1 in child) { folder.childName = j1["name"]; folder.childId = j1["id"]; DrchildNode = new Node(folder.childId, folder.childName, true, "Icon_Folder.png"); newNode2.Nodes.Add(DrchildNode); DrchildNode.ParentNode = newNode2; } } tree1.Nodes[0].Nodes.Add(newNode2); newNode2.MouseLeftButtonDown += new MouseButtonEventHandler(draftsMouseLeftButtonDown); break; case "Junk": Node newNode3 = new Node(folder.Id, title, true, "Icon_Junk.png"); Node JuchildNode = null; if (jo.Keys.Contains("folder")) { JsonArray child = (JsonArray)jo["folder"]; foreach (JsonObject j1 in child) { folder.childName = j1["name"]; folder.childId = j1["id"]; JuchildNode = new Node(folder.childId, folder.childName, true, "Icon_Folder.png"); newNode3.Nodes.Add(JuchildNode); JuchildNode.ParentNode = newNode3; } } tree1.Nodes[0].Nodes.Add(newNode3); newNode3.MouseLeftButtonDown += new MouseButtonEventHandler(junkMouseLeftButtonDown); break; case "Trash": Node newNode4 = new Node(folder.Id, title, true, "Icon_Trash.png"); Node TrchildNode = null; if (jo.Keys.Contains("folder")) { JsonArray child = (JsonArray)jo["folder"]; foreach (JsonObject j1 in child) { folder.childName = j1["name"]; folder.childId = j1["id"]; TrchildNode = new Node(folder.childId, folder.childName, true, "Icon_Folder.png"); newNode4.Nodes.Add(TrchildNode); TrchildNode.ParentNode = newNode4; } } tree1.Nodes[0].Nodes.Add(newNode4); newNode4.MouseLeftButtonDown += new MouseButtonEventHandler(trashMouseLeftButtonDown); break; } }
}
this works fine for the first time the page loads,
if i need this method again ...during the server call i have a problem ...,
actually user to allowed to add some nodes , so i need to send a request to server to get the nodes information..
am getting the request..
but wen am to create new nodes to tree depending on the response i got ..
it doesnt work ...
its appending to the old nodes of the tree ..which will cause repeatition of the nodes..
when am using tree1.nodes.clear()..
before adding new nodes an getting index out of range eror at nodes.
Hope this is clear....