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ß
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.