Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

C# Liste ergänzen

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);
            }
       
      }
    }
   }

}


« Letzte Änderung: 19.12.21, 12:11:11 von Uwe70 »
« Hilfe LiveCode-Programmierung Sprache C »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...