Laden...

[erledigt] Listview wird nach .Clear() nicht mehr neu gezeichet

Erstellt von schuppsl vor 12 Jahren Letzter Beitrag vor 12 Jahren 851 Views
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 12 Jahren
[erledigt] Listview wird nach .Clear() nicht mehr neu gezeichet

Hallöle.

Man eine Newbie Frage zu einem anderen Thema.
Ich bin ja sonst asp.net progger, muss aber für nen Kunden ein kleinen Windows.Forms Progrämschen bauen. Der Kollege ist im Urlaub, kann den also nicht fragen:-)

Also ich lese ganz einfach Daten aus einer Textdatei und liste diese in einer Windows Form in ein Listview.

Geht perfekt, sortieren geht auch schon.

Jetzt bin ich dabei nen Filter zu klöppeln, wo es noch hakt.
Also Textfeld und Button eingebaut, bei Klick auf den Button wird einfach die Itemkollection durchlaufen und festgestellt, ob der Suchtext irgendwio vorkommt.

Geht auch soweit.

Jetzt möchte ich das Ergebnis natürlich auch darstellen und vorher das Listview löschen um dann die gefilterten items einzufügen.

Das Clear geht, aber danach werden keine Daten mehr angezeigt.

also hier mal Quellcode:

 private void btnFilter_Click(object sender, EventArgs e)
        {

            ListView.ListViewItemCollection coll = new ListView.ListViewItemCollection(listBuchdat);
            coll = listBuchdat.Items;


            foreach (ListViewItem item in coll)
            {
               ListViewItem.ListViewSubItemCollection subColl = item.SubItems;
               ListViewItem.ListViewSubItem myItem = new ListViewItem.ListViewSubItem(item, txtFilter.Text);



               for (int i = 0; i < subColl.Count; i++)
               {
                   if (subColl[i].Text == txtFilter.Text) 
                   {
                       ListViewItem listItem = new ListViewItem(subColl[0].Text);   //Name
                       listItem.SubItems.Add(subColl[1].Text);                      //Ausweis
                       listItem.SubItems.Add(subColl[2].Text);                      //Datum  
                       listItem.SubItems.Add(subColl[3].Text);                      //Uhrzeit
                       listItem.SubItems.Add(subColl[4].Text);                      //Buchart
                       aItem.Add( listItem);
                   }
               } 
                
            }

           

        
            listBuchdat.Clear();
            UpdateListView();
             
        }


        private void UpdateListView()
        {
            ListViewItem[] items = (ListViewItem[])aItem.ToArray();
            listBuchdat.Items.AddRange(items);
            listBuchdat.Update();
        }

Also das aItem ist so definiert:

List<ListViewItem> aItem = new List<ListViewItem>();    

Ich speichere die Daten also zwischen und klopfe sie dann mit UpdateListView wieder rein.
vorher lösche ich das mit Clear().

Gelöscht wirds, aber die Daten kommen nicht wieder rein...
Ich habe noch einen anderen Button, der die Hauptfunktion aufruft die auch beim Start aufruft, die das Listview füllt.
Klicke ich diesen, werden die Daten immer und immer wieder eingetragen, was ja auch klar und gut so ist.
Mache ich vorher Clear() ist das Listview leer und wird nicht mehr mit Daten gefüllt.
Also irgendwas ist da mit Clear...

Was mache ich falsch?

A
118 Beiträge seit 2009
vor 12 Jahren

Du möchtest ja die Items löschen, deshalb musst du:

listBuchdat.Items.Clear();

und nicht listBuchdat.Clear().

Mfg
Aratar

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 12 Jahren

DANKEEEEEEEE 👍 👍 👍