30. april 2007 - 10:14Der er
2 kommentarer og 1 løsning
Optegning af treeview virker ikke men data bliver dog lagt i!
Hejsa.
Jeg oplever en lidt underlig ting synes jeg.
Jeg har et lille stykke kode, som kaldes fra en anden tråd end den mit treeview er oprettet i. Jeg tjekker om mit treeview skal invokes, hvilket det af en eller anden grund ikke skal.
Jeg opdaterer så mit treeview, og kan også se, at count værdien for det stiger, og indsætter jeg breakpoints undervejs, kan jeg se at de forskellige properties bliver sat korrekt for mine noder og selve mit treeview.
Men alle de data der ligger i det, bliver bare ikke tegnet overhovedet.
Laver jeg til gengæld en opdatering af treeview'et fra SAMME tråd, som det er oprettet i. Så virker det fint!
Nogen der har en ide om hvad der kan være galt?
/Lasse
Ps. Første del af den kode jeg kalder fra en anden tråd, ser således ud :
public void LoadXMLTreeView(String XML) { XML2 = XML; XmlDocument XmlR = new XmlDocument(); if (treeView1.InvokeRequired) { Delegate1 d = new Delegate1(LoadXMLTreeView); this.Invoke(d, new object[] { XML }); } else {
Det virker som om, at din tråd bliver kørt forsendt eller for tidligt. Det er vigtigt at elementerne bliver tilføjet til dit treeview på det rigtige tidspunkt i ”Page Cyclen”. Prøv og find ud af, hvornår dine elementer bliver tilføjet. De skal helst blive tilføjet på samme tidspunkt som CreateChildControls bliver eksekveret eller ved Page_Load. Hvis du f.eks. tilføjer elementer ved On_Render bliver de ikke vist.
Kan du uploade hele koden (evt. som et simpelt eksempel) så kan vi se hvad du gør galt.
foreach (XmlNode X in maincategory) { if (X.ChildNodes[0] != null) { node1 = treeView1.Nodes.Add("Overkategori - " + X.ChildNodes[0].Value.ToString());
if (X.ChildNodes[1] != null) { foreach (XmlNode S in X.ChildNodes[1]) {
if (S.ChildNodes != null) { node2 = new TreeNode(); switch (S.Name.ToString()) { case "NAVN": node2.Text = "Underkategori - " + S.ChildNodes[0].Value.ToString(); break; case "ID": node2.Name = S.Name.ToString(); break;
} } } } } } }
catch (Exception Ex)
{
MessageBox.Show(Ex.Message); }
}
}
-----------------
Det er lidt svært at uploade mere kode, da det efterhånden er et ret komplekst program = meget kode...
Men jeg kan forsøge at forklare. Jeg modtager en XML string fra en Socket forbindelse over netværket... Jeg gør dette mange andre steder i mit program, og opdaterer både textboxes, datagridviews, combo bokse osv.
Jeg var mere intereseret i at se hvornår LoadXMLTreeView bliver kørt. Det vigtige er som sagt, hvornår i Page life cyclen metoden bliver kørt. Ikke så meget hvilken tråd.
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.