Skip to main content

Microsoft Silverlight

tree problem .....RSS Feed

(0)

hari4u
hari4u

Member

Member

39 points

78 Posts

tree problem .....

 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 Luo - MSFT
Yi-Lun L...

All-Star

All-Star

25052 points

2,747 Posts

Re: tree problem .....

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);

shanaolanxing - I'll transfer to the Windows Azure team, and will have limited time to participate in the Silverlight forum. Apologize if I don't answer your questions in time.

hari4u
hari4u

Member

Member

39 points

78 Posts

Re: tree problem .....

 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....

Hari. 

  • Unanswered Question
  • Answered Question
  • Announcement
Microsoft Communities