17. september 2008 - 21:38Der er
10 kommentarer og 1 løsning
Linq to XML + TreeView
Hej Ekspterter.
Jeg har et problem med noget Linq to XML sammen med et treeview.
Jeg har dette stykke kode onLoad, og det virker også fint, men hvis jeg åbner et andet vindue, og så åbner denne igen, får jeg ikke nogle noder i mit treeview.
var shipping = from shippingcost in ShippingXML.Descendant("Type") select new { weight = shippingcost.Element("Vægt").Value, price = shippingcost.Element("Pris").Value, type = shippingcost.Attribute ("Betalings_type").Value, };
int parent = 0; int child = 0;
foreach (var ship in shipping) { foreach (TreeNode node in tvShippingCost.Nodes) { if (node.Text == ship.type.ToString()) found = true; }
if (!found) { TreeNode node = new TreeNode(); node.Text = ship.type.ToString(); tvShippingCost.Nodes.Add(node); }
foreach (TreeNode node in tvShippingCost.Nodes) { if (node.Text == ship.type.ToString()) { TreeNode newnode = new TreeNode();
Der må simpelten være noget kode du ikke viser mig, kode opfører sig ikke random og på forskellig måde, så der er noget som går galt ...
Hvad mener du også med at det ikke loader når du åbner et nyt vindue ? Hvad hedder din Form class ? Hvordan åbner du det nye vindue ? Hvordan viser du det ?
Du må også kunne se i Debug om dit "XDocument" reelt kommer til at indeholde noget efter det har loaded dit xml dokument ... ?
Koden ligger i en usercontrol i form_load. Når jeg første gang viser denne usercontrol, med panel.Controls.Add(new usercontrol()), viser den fint noderen i mig treeview, åbner jeg så en anden usercontrol f.eks panel.Controls.Clear; panel.Controls.Add(new usercontrol2()); og derefter åbner den første igen panel.Controls.Add(new usercontrol()) får jeg ikke vist nogle noder, når jeg debugger mig gennem koden, springer den simpelthen over foreach løkkerne når jeg åbner usercontrolen anden gang. endvidere kan jeg se at mit XDocument indeholder de korrekte data både første og anden gang.
var shipping = from shippingcost in ShippingXML.Descendants("Type") select new { weight = shippingcost.Element("Vægt").Value, price = shippingcost.Element("Pris").Value, type = shippingcost.Attribute("Betalings_type").Value, };
int parent = 0; int child = 0;
foreach (var ship in shipping) { foreach (TreeNode node in tvShippingCost.Nodes) { if (node.Text == ship.type.ToString()) found = true; }
if (!found) { TreeNode node = new TreeNode(); node.Text = ship.type.ToString(); tvShippingCost.Nodes.Add(node); }
foreach (TreeNode node in tvShippingCost.Nodes) { if (node.Text == ship.type.ToString()) { TreeNode newnode = new TreeNode();
Og ja, det ser ud som om at den husker den sidste value, selv om det virker noget underligt.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.