Avatar billede trekkies Juniormester
24. marts 2005 - 17:35 Der er 13 kommentarer og
2 løsninger

xml i en dropdown i C#

Hej alle sammen

Jeg er ved at lave et lille program i C#, men kan ikke få en xml fil ind i en dropdown, jeg har læse denne artikle:
http://www.eksperten.dk/artikler/498
men det har ikke hjulpet mig.
Jeg har denne xml fil:
<?xml version="1.0" encoding="utf-8" ?>
<cd>
    <type>
        Pop
    </type>
    <type>
        Rock
    </type>
</cd>

Og her er min C# fil:
private void cbbgenre_SelectedIndexChanged(object sender, System.EventArgs e)
{
    // Læse XML fra fil
    XmlDocument doc = new XmlDocument();
    doc.Load(@"xml/art.xml");
    // Løbe gennem XML
    XmlNodeList cder = doc.GetElementsByTagName("cd");
    foreach(XmlNode cd in cder)
    {
        string type = cd.ChildNodes[0].FirstChild.Value;
        Console.WriteLine(cd);
    }
           
}

xml filen skal gerne være hentet når at man åbner filen(C#).

Håber at I kan forstå mig og hjælpe mig :>
Avatar billede burningice Nybegynder
24. marts 2005 - 19:01 #1
har du prøvet at ændre

Console.WriteLine(cd);

til

cbbgenre.Items.Add(cb);

??
Avatar billede burningice Nybegynder
24. marts 2005 - 19:02 #2
og så flytte hele koden for SelectedIndexChanged-eventhandleren op i constructoren på din klasse
Avatar billede trekkies Juniormester
24. marts 2005 - 21:09 #3
Jeg har prøvet at ændre sætningen til:
cbbgenre.Items.Add(cd);
Men det hjalp ikke.

Du skriver at jeg skal flytte hele koden for SelectedIndexChanged-eventhandleren op i constructoren, skal det være det hele:
private void cbbgenre_SelectedIndexChanged(object sender, System.EventArgs e)
{
                // Læse XML fra fil
        XmlDocument doc = new XmlDocument();
        doc.Load(@"xml/art.xml");
        // Løbe gennem XML
        XmlNodeList cder = doc.GetElementsByTagName("cd");
        foreach(XmlNode cd in cder)
        {
            string type = cd.ChildNodes[0].FirstChild.Value;
            cbbgenre.Items.Add(cd);
        }
}

Eller kun koden om xml:

// Læse XML fra fil
XmlDocument doc = new XmlDocument();
doc.Load(@"xml/art.xml");
// Løbe gennem XML
XmlNodeList cder = doc.GetElementsByTagName("cd");
foreach(XmlNode cd in cder)
{
    string type = cd.ChildNodes[0].FirstChild.Value;
    cbbgenre.Items.Add(cd);
}
Avatar billede burningice Nybegynder
24. marts 2005 - 21:51 #4
:) kun koden der er INDE i din metode. Problemet som det er nu, er at koden der tilføjer dine ting til listen kun bliver kørt når at det valgte item i listen bliver ændret. Og det gør det ikke, så længe listen er tom. Lidt af en dead end
Avatar billede trekkies Juniormester
25. marts 2005 - 10:53 #5
Du skiver følgende:
Lidt af en dead end

Jeg har taget nogle billeder af mit program:
http://www.darkskies.dk/cd.jpg

Når at man klikker på linket, så kommer man til dette billed:
http://www.darkskies.dk/cd1.jpg

Og der vil jeg gerne have at der kommer noget fra en xml fil ind i min dropdown, er det ikke muligt?
Avatar billede arne_v Ekspert
25. marts 2005 - 11:03 #6
Jeg poster lige et eksempel
Avatar billede arne_v Ekspert
25. marts 2005 - 11:03 #7
using System;
using System.Collections;
using System.Drawing;
using System.Windows.Forms;
using System.Xml;

public class MainForm : Form
{
    private ComboBox cbx;
    public MainForm()
    {
        try
        {
            InitializeComponent();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    public static void Main(string[] args)
    {
        Application.Run(new MainForm());
    }
    private void InitializeComponent()
    {
        cbx = new ComboBox();
        SuspendLayout();
        cbx.Location = new Point(50, 50);
        cbx.Size = new Size(100, 25);
        cbx.Name = "Dynamic Combo Box";
        cbx.SelectedIndexChanged += new EventHandler(ChooseHandler);
        ArrayList list = new ArrayList();
        XmlDocument doc = new XmlDocument();
        doc.Load("C:\\cbx.xml");
        XmlNodeList elements = doc.GetElementsByTagName("comboboxvalue");
        foreach(XmlNode element in elements)
        {
            list.Add(element.FirstChild.Value);
        }
        cbx.DataSource = list;
        ClientSize = new Size(200, 200);
        Name = "Main Form";
        Text = "Main Form";
        Controls.Add(cbx);
        ResumeLayout(false);
    }
    private void ChooseHandler(object o, EventArgs e)
    {
        MessageBox.Show("Du valgte " + ((ComboBox)o).SelectedValue);
    }
}
Avatar billede arne_v Ekspert
25. marts 2005 - 11:04 #8
<?xml version="1.0"?>
<combobox>
  <comboboxvalue>a</comboboxvalue>
  <comboboxvalue>bb</comboboxvalue>
  <comboboxvalue>ccc</comboboxvalue>
</combobox>
Avatar billede trekkies Juniormester
25. marts 2005 - 11:15 #9
Kigger på det i eftermiddag, vender tilbage senere :>
Avatar billede burningice Nybegynder
25. marts 2005 - 11:30 #10
hvad jeg mener med dead end, er at du har skrevet koden der skal fylde listen et sted hvor den aldrig vil kunne blive udført.

Hvis du kigger på arnes eksempel har han gjort det jeg foreslog, nemlig at flytte koden op i constructoren, derved sikrer du dig at den bliver kaldt når formen åbnes.

(rent teknisk ligger det i en metode der bliver kaldt af constructoren, men lad nu det ligge)
Avatar billede trekkies Juniormester
27. marts 2005 - 20:21 #11
Nu har jeg prøvet at får det at virke, men nej, det vil ikke som jeg vil, så hvis du lægger et svar for din hjælp, så giver jeg dig point :>
Avatar billede arne_v Ekspert
27. marts 2005 - 21:47 #12
cyberfessor ? mig ?
Avatar billede trekkies Juniormester
28. marts 2005 - 00:09 #13
Ja, jer begge to, jeg så forkert, så læg venligst et svar :>
Avatar billede arne_v Ekspert
28. marts 2005 - 00:10 #14
:-)
Avatar billede burningice Nybegynder
28. marts 2005 - 00:53 #15
.
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