Avatar billede Simon Praktikant
07. oktober 2004 - 00:59 Der er 8 kommentarer og
1 løsning

fylde listBox med data fra XML-fil

Hvordan fylder jeg en listBox med data fra en XML-fil?
Jeg har prøvet noget i den stil her, men det virker ikke:

DataSet ds = new DataSet();
ds.ReadXml("user_list.xml");
listBox1.DataSource = ds;

hvordan gøres dette nemmest?
Avatar billede snepnet Nybegynder
07. oktober 2004 - 01:00 #1
Prøv :
DataSet ds = new DataSet();
ds.ReadXml("user_list.xml");
listBox1.DataSource = ds.Tables[0];  // altså første tabel i datasættet
listBox1.DataBind();

mvh
Avatar billede snepnet Nybegynder
07. oktober 2004 - 01:04 #2
og så ville det nok være en idé hvis du kunne verificere at du har indhold i tabellen efter du har kaldt ReadXml(...).
mvh
Avatar billede Simon Praktikant
07. oktober 2004 - 01:14 #3
Jeg har prøvet at kalde første tabel, men uden held. Jeg tror at det er fordi jeg opbygger min xml-fil forkert så. Ved du hvordan den skal opbygges?
Avatar billede snepnet Nybegynder
07. oktober 2004 - 01:24 #4
øh... tjoh... det kommer jo lidt and på hvad du ønsker at have i den, men hvis det "bare" er værdimængder til lister kunne det være sådan en her :

<?xml version="1.0" standalone="yes"?>
<SomeData>
  <SomeTable>
    <SomeId>1</SomeId>
    <SomeValue>hej</SomeValue>
  </SomeTable>
  <SomeTable>
    <SomeId>2</SomeId>
    <SomeValue>med</SomeValue>
  </SomeTable>
  <SomeTable>
    <SomeId>3</SomeId>
    <SomeValue>dig</SomeValue>
  </SomeTable>
</SomeData>

Den tror jeg vil gå fint nok (det er ikke fordi jeg er den store xml-ørn).

mvh
Avatar billede Simon Praktikant
07. oktober 2004 - 08:00 #5
når jeg kompilerer med ovenstående c# kode får jeg denne fejl:
'System.Windows.Forms.ListBox' does not contain a definition for 'DataBind'
så derfor fjerner jeg:
listBox1.DataBind();
så kan jeg gdot komlilere. Der bliver bare ikke indsat den ønskede tekst i min listbox.
For hver række i mit xml-dok står der i listboxen blot:
System.Data.DataRowView
Avatar billede snepnet Nybegynder
07. oktober 2004 - 08:21 #6
ahh... det er winforms du laver :o)
(jeg sidder normalt med asp.net, så det har jeg lidt en tendens til at falde tilbage på - sorry).

Men prøv sådan her (du skal angive hvad der skal vises) :

DataSet ds = new DataSet();
ds.ReadXml(@"C:\TestFiles\SampleXml.xml"); // eller hvor du nu har den
lstlistBox1.DataSource = ds.Tables[0];
lstlistBox1.DisplayMember = "SomeValue"; // det er så kolonnen Tables[0] i datasættet.

Ovenstående virker her, med den xml jeg postede tidligere.
Avatar billede snepnet Nybegynder
07. oktober 2004 - 08:22 #7
// det er så kolonnen Tables[0] i datasættet
giver jo ikke megen mening :
// det er så værdien i kolonnen SomeValue i den første tabel i datasættet der bliver vist.
ville nok have været bedre ;o)
mvh
Avatar billede Simon Praktikant
07. oktober 2004 - 16:10 #8
Mange tak for hjælpen. Nu virker det.
Smid et svar og pointene er dine
Avatar billede snepnet Nybegynder
07. oktober 2004 - 16:23 #9
et svar her :o)
mvh
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