2011-08-17 3 views
1

J'utilise le code suivant pour afficher xml en tant qu'arborescence.Je souhaite actualiser la vue arborescente avec une nouvelle valeur

Maintenant, je veux rafraîchir lorsque je modifie xml en utilisant une zone de texte dans la même fenêtre. Lorsque je modifie et enregistre le fichier en utilisant la zone de texte, je veux également actualiser treeview avec cette nouvelle valeur.

Comment puis-je le faire? J'utilise treeview1.update(); et treeview1.refresh(); mais cela ne fonctionne pas.

J'utilisé la partie de code suivant:

private void button1_Click(object sender, EventArgs e) 
{ 
    XmlDataDocument xmldoc = new XmlDataDocument(); 
    XmlNode xmlnode ; 
    FileStream fs = new FileStream("tree.xml", FileMode.Open, FileAccess.Read); 
    xmldoc.Load(fs); 
    xmlnode = xmldoc.ChildNodes[1]; 
    treeView1.Nodes.Clear(); 
    treeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name)); 
    TreeNode tNode ; 
    tNode = treeView1.Nodes[0]; 
    AddNode(xmlnode, tNode); 
} 

private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode) 
{ 
    XmlNode xNode ; 
    TreeNode tNode ; 
    XmlNodeList nodeList ; 
    int i = 0; 
    if (inXmlNode.HasChildNodes) 
    { 
     nodeList = inXmlNode.ChildNodes; 
     for (i = 0; i <= nodeList.Count - 1; i++) 
     { 
      xNode = inXmlNode.ChildNodes[i]; 
      inTreeNode.Nodes.Add(new TreeNode(xNode.Name)); 
      tNode = inTreeNode.Nodes[i]; 
      AddNode(xNode, tNode); 
     } 
    } 
    else 
    { 
     inTreeNode.Text = inXmlNode.InnerText.ToString(); 
    } 
} 
+0

je l'ai fait vous remercie beaucoup. – maduranga

Répondre

0

Vous pouvez créer l'arborescence complètement nouveau après avoir sauvegardé vos modifications. Afin de réutiliser votre code existant, vous pouvez factoriser un peu:

private void button1_Click(object sender, EventArgs e) 
{ 
    this.FillTreeView(); 
} 
private void FillTreeView() 
{ 
    XmlDataDocument xmldoc = new XmlDataDocument(); 
    XmlNode xmlnode ; 
    FileStream fs = new FileStream("tree.xml", FileMode.Open, FileAccess.Read); 
    xmldoc.Load(fs); 
    xmlnode = xmldoc.ChildNodes[1]; 
    treeView1.Nodes.Clear(); 
    treeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name)); 
    TreeNode tNode ; 
    tNode = treeView1.Nodes[0]; 
    AddNode(xmlnode, tNode); 
} 
private void AddNode(...) { ... } 

... et après avoir sauvegardé vos modifications dans le fichier xml, appelez FillTreeView():

private void button2_Click(object sender, EventArgs e) 
{ 
    // [Save changes to file] 
    this.FillTreeView(); 
} 
+0

Stephan a raison, mais s'il vous plaît noter que la classe 'XmlDataDocument' est obsolète http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/2406023f-59b4-432b-8e4d-afd551d2f890/ Je recommande en utilisant la classe 'XmlDocument' ou Linq to XML. Pour un exemple de XmlDocument, cochez cette réponse du jeune Fang http://forums.asp.net/p/1062335/1528035.aspx –

Questions connexes