Hallo
ich hoffe es kann mir jemand helfen
ich würde gerne einen Datensatz zu meiner Liste hinzufügen schaff es aber nicht.
ich öffne eine XMLDatei und befülle mein Formular mit einer treeView,
wenn ich dann auf die Grupppe klicke wird meine listView befüllt.
Wenn ich dann einen Eintrag in einen anderem Formular öffne, ändere und wieder schließe wird alles richtig aktualisiert.
wenn ich aber einen neuen Eintrag hinzufügen will funktioniert es bis zum anzeigen in der listView.
Leider wenn ich dann in der treeView die Grupppe wechsle und wieder auf die vorherige Gruppe zurück gehe ist der neue Eintrag weg.
Wie schaffe ich es das der neue Eintrag gespeichert wird.
Unterhalb mein Code
using DatenVerwaltung;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace BaumarktVerwaltung
{
public partial class FormMain : Form
{
private Datei datei = null;
public FormMain()
{
InitializeComponent();
}
private void öffnenToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "XML Dateien|*.xml|Alle Dateien|*.*";
if (dialog.ShowDialog() == DialogResult.OK)
{
this.datei = Datei.Open(dialog.FileName);
this.datei.Save();
this.statusLabelCurrentFile.Text = dialog.FileName;
}
}
private void FormMain_Load(object sender, EventArgs e)
{
this.ShowItem();
}
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
listView1.Items.Clear();
if (e.Node.Level == 2)
{
List<Produkt> produkts = datei.AbteilungListe.Find(x => x.Warengruppe.Contains(e.Node.Parent.Text)).GruppenListe.Find(x => x.Kategorie.Contains(e.Node.Text)).ProduktListe;
foreach (Produkt produkt in produkts) this.ShowItem1(produkt);
}
}
private void ShowItem1(Produkt produkt)
{
ListViewItem item = new ListViewItem();
item.Tag = produkt;
item.Text = produkt.ProduktId;
item.SubItems.Add(produkt.ProduktBezeichnung);
item.SubItems.Add(produkt.Marke);
item.SubItems.Add(produkt.Groesse);
item.SubItems.Add(produkt.Anzahl);
item.SubItems.Add(produkt.Wert);
this.listView1.Items.Add(item);
if(produkt.Anzahl == "10") item.BackColor = Color.Red;
}
private void ShowItem()
{
string ProjectPath = Assembly.GetExecutingAssembly().Location;
string WorkPath = Path.GetDirectoryName(ProjectPath);
datei = Datei.Open(Path.Combine(WorkPath, "Waren.xml"));
TreeNode Root = new TreeNode("Abteilungen");
treeView1.Nodes.Clear();
foreach (Abteilung item in datei.AbteilungListe)
{
List<TreeNode> nodes = new List<TreeNode>();
foreach (Gruppe gruppe in item.GruppenListe)
{
nodes.Add(new TreeNode(gruppe.Kategorie));
}
TreeNode node = new TreeNode(item.Warengruppe, nodes.ToArray());
Root.Nodes.Add(node);
}
treeView1.Nodes.Add(Root);
treeView1.EndUpdate();
}
private void editAbteilungToolStripMenuItem_Click(object sender, EventArgs e)
{
FormAbteilungen abteilungForm = new FormAbteilungen();
if (abteilungForm.ShowDialog() == DialogResult.OK)
{
this.ShowItem();
}
}
private void MenuItemWarengruppen_Click(object sender, EventArgs e)
{
FormGruppen gruppenForm = new FormGruppen();
if (gruppenForm.ShowDialog() == DialogResult.OK)
{
this.ShowItem();
}
}
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewItem item = this.listView1.GetItemAt(e.X, e.Y);
Produkt produkt = (Produkt)item.Tag;
FormProdukt produktForm = new FormProdukt(produkt);
if (produktForm.ShowDialog() == DialogResult.OK)
{
item.SubItems[0].Text = produkt.ProduktId;
item.SubItems[1].Text = produkt.ProduktBezeichnung;
item.SubItems[2].Text = produkt.Marke;
item.SubItems[3].Text = produkt.Groesse;
item.SubItems[4].Text = produkt.Anzahl;
item.SubItems[5].Text = produkt.Wert;
}
}
private void MenuItemNew_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode.Level == 2)
{
FormProdukt produktForm = new FormProdukt();
if (produktForm.ShowDialog() == DialogResult.OK)
{
//if (treeView1.SelectedNode != null)
//{
//gruppe = (Gruppe)this.treeView1.SelectedNode.Tag;
//gruppe.ProduktListe.Clear();
//List<Produkt> produktse = datei.AbteilungListe.Find(x => x.Warengruppe.Contains(Abteilungsname)).GruppenListe.Find(x => x.Kategorie.Contains(Gruppenname)).ProduktListe;
//foreach (ListViewItem item in this.listView1.Items)
// foreach (Produkt produkt in produktse)
// produktse.Add((Produkt)item.Tag);
//}
this.ShowItem1(produktForm.Produkt);
}
}
}
}
}
Uwe70 (1) |