Laden...

GUI Eingabe -> XML -> Eintrag im ListView, Zahl der Einträge stimme nicht überein

Erstellt von jok3r89 vor 6 Jahren Letzter Beitrag vor 6 Jahren 864 Views
J
jok3r89 Themenstarter:in
70 Beiträge seit 2017
vor 6 Jahren
GUI Eingabe -> XML -> Eintrag im ListView, Zahl der Einträge stimme nicht überein

Hallo
mein kleines Program macht beim lesen der XML Einträge für den ListView Probleme.
Hier der Code ->

private void ListView_Refresh()
        {
            S7Model model = new S7Model();
            ListViewItem item = null;
            model =  manager.S7ModelDeserializer();
            listView_S7Models.BeginUpdate();
            foreach (var row in model.s7)
            {
                item = new ListViewItem(row.id.ToString());
                item.SubItems.Add(row.name);
                item.SubItems.Add(row.destination.ip);
                item.SubItems.Add(row.destination.rack.ToString());
                item.SubItems.Add(row.destination.slot.ToString());
                item.SubItems.Add(row.refresh.ToString());
            }
            listView_S7Models.Items.Add(item);
            listView_S7Models.EndUpdate();
        }
        public S7Model S7ModelDeserializer()
        {
            S7Model model = new S7Model();
            // Create a new XmlSerializer instance with the type of the test class
            XmlSerializer SerializerObj = new XmlSerializer(typeof(S7Model));

            #region Load object

            // Create a new file stream for reading the XML file
            string path = Path.Combine(Environment.CurrentDirectory, @"Data\", "S7Model.xml");
            using (FileStream fileStream = new FileStream(path, FileMode.Open))
            {
                model = (S7Model)SerializerObj.Deserialize(fileStream);
            }

            return model;

            #endregion

        }

   // Config
    [XmlRoot("S7Models"),Serializable()]
    public class S7Model
    {   //database
        [XmlElement("s7")]
        public List<S7> s7 { get; set; }
    }

    public class S7
    {
        [XmlAttribute("id")]
        public int id = 0;
        [XmlText]
        public string name { get; set; }

        [XmlElement("Destination")]

        public Destination destination = new Destination();
        public class Destination
        {
            public String ip { get; set; }
            public int rack { get; set; }
            public int slot { get; set; }
        }
        public DateTime refresh = new DateTime();
    }
    //

Der erste Eintrag ist immer leer im ListView, woran kann das liegen?
Gruß

C
2.122 Beiträge seit 2010
vor 6 Jahren
S7Model model = new S7Model();
            ListViewItem item = null;
            model =  manager.S7ModelDeserializer();

Du erstellst ein new S7Model und überschreibst das zwei Zeilen weiter wieder.
In S7ModelDeserializer() das selbe.

In foreach erstellst du jeweils ein neues item und füllst es. Du trägst es aber nirgends ein. Eingetragen wird nur das letzte item nach der Schleife. Das müsste dir eigentlich an den fehlenden Daten auffallen. Ich nehme an irgendwo in dieser Gegend liegt auch der Fehler der die leere Zeile verursacht.
Nutze den Debugger und sieh dir an was wann eingetragen wird.