Avatar billede lasserasch Juniormester
30. april 2007 - 10:14 Der 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
            {


                try
                {

                    XmlR.LoadXml(XML);

                    XmlNodeList maincategory = XmlR.GetElementsByTagName("MAINCATEGORY");


                    foreach (XmlNode X in maincategory)
                    {
                        if (X.ChildNodes[0] != null)
                        {
                            node1 = treeView1.Nodes.Add("Overkategori - " + X.ChildNodes[0].Value.ToString());


ect.......
Avatar billede inur Nybegynder
30. april 2007 - 10:45 #1
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.
Avatar billede lasserasch Juniormester
30. april 2007 - 10:54 #2
Jeg prøver lige med lidt mere kode så :


Her er det kald som, hvis kaldes fra samme tråd som treeview1 er lavet på, virker fint! Men kaldes det fra en anden tråd, virker det ikke!


-----------------
        public void LoadXMLTreeView(String XML)
        {
         
            XmlDocument XmlR = new XmlDocument();
            if (treeView1.InvokeRequired)
            {
                Delegate1 d = new Delegate1(LoadXMLTreeView);
               
                this.Invoke(d, new object[] { XML });
            }
            else
            {
                try
                {
                   
                    XmlR.LoadXml(XML);

                    XmlNodeList maincategory = XmlR.GetElementsByTagName("MAINCATEGORY");

                    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.

Det er kun dette treeview hvor det ikke virker.
Avatar billede inur Nybegynder
30. april 2007 - 22:57 #3
Hej lasserasch

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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester