Laden...

Dropdownmenüs aus XML

Erstellt von GIBBI vor 8 Jahren Letzter Beitrag vor 8 Jahren 688 Views
G
GIBBI Themenstarter:in
8 Beiträge seit 2015
vor 8 Jahren
Dropdownmenüs aus XML

Hallo zusammen,

ich arbeite mich gerade in C# ein und probiere 2 Komboboxen als Dropdownmenü mit den Informationen aus einer XML-Datei zu bestücken.

Das Ganze Soll nachher beispielsweise so aussehen:

  1. Kombobox: Auswahl zwischen Obst und Gemüse.
  2. Kombobox: Gibt entweder 5 Obst- oder 5 Gemüsesorten zur Auswahl

Ist dieses Vorhaben ohne weiteres realisierbar? Ich stehe hier gerade irgendwie auf dem Schlauch. Die erste Dropdownliste ist kein Problem, anhand der ersten Auswahl die zweite zu beeinflussen kriege ich allerdings nicht hin.

      
  public void BindDropDown()
        {
            XmlTextReader xmdatareader = new XmlTextReader("Xml/test.xml");
            DataSet _objdataset = new DataSet();
            _objdataset.ReadXml(xmdatareader);

            comboBox1.DataSource = _objdataset.Tables[0];
            comboBox1.DisplayMember = "Name";
            comboBox1.ValueMember = "Id";

         //   comboBox2.DataSource = _objdataset.Tables[0];
        //    comboBox2.DisplayMember = "Sorte";
        //    comboBox2.ValueMember = "SorteId";
        }

Das hier mal als Beispiel XML


<?xml version="1.0" encoding="utf-8" ?>

<Nahrung>

  <Art>
    <Id>1</Id>
    <Name>Obst</Name>
  </Art>

  <Art>
    <Id>2</Id>
    <Name>Gemuese</Name>
  </Art>

</Nahrung>

Wie füge ich jetzt die verschiedenen Obst und Gemüsesorten in meiner XML ein und greif sie in meinem Programm wieder auf?

Sorry für die Anfängerfrage, aber ich arbeite mich gerade wie gesagt erst in die ganze Materie ein.

Vielen Dank schonmal!
GIBBI

B
357 Beiträge seit 2010
vor 8 Jahren

Ich würde dir empfehlen, dir das Thema Objektserialisierung in C# anzusehen. So ließe sich etwa folgende Klassen bauen:

class Nahrung
{
   List<claArt> listArten;

   public Nahrung()
   {
   }
}

class claArt
{
   string strName;
   List<string> listItems;

   public claArt()
   {
   }
}

Die Klasse Nahrung lässt sich dann wie folgt serialisieren:

FileStream stream = new FileStream("test.xml", FileMode.Create);
XmlSerializer serializer = new XmlSerializer(typeof(Nahrung));
serializer.Serialize(stream, this);
stream.Close();

Deine mit Daten bestückten Objekte sind jetzt zu einer XML-Datei gewandelt. Auslesen lässt sich diese ähnlich einfach:

XmlSerializer serializer = new XmlSerializer(typeof(Nahrung));
FileStream stream = new FileStream("test.xml", FileMode.Open);
Nahrung na = (Nahrung)serializer.Deserialize(stream);
stream.Close();

Deine Objekte sind aus der XML-Datei wiederhergestellt worden. Dann sollte es vollends einfach sein, die jeweiligen List-Objekte zu durchlaufen und die Dropdown-Menüs mit Inhalten zu füllen, je nachdem, welches Item darin ausgewählt wurde.

Edit: Natürlich ist das noch kein vollständiger Code. List-Objekte müssen erst noch mit new erstellt werden usw. Aber ich denke, als Grundgerüst kann man was damit anfangen.