31 Stimmen

C# Alle Elemente in ListView löschen

Ich versuche, meine Listenansicht zu löschen, aber die Löschmethode funktioniert nicht:

myListView.Items.Clear();

Das funktioniert nicht. Wenn ich in dieser Zeile einen Haltepunkt setze, wird die Zeile ausgeführt, aber meine Listenansicht ist nicht leer. Wie kommt das?

Ich fülle meine Listview, indem ich ihre Datenquelle auf eine Datentabelle einstelle.

Meine Lösung ist nun, die Datenquelle auf eine leere Datentabelle zu setzen.

Ich frage mich nur, warum klare nicht den Trick machen?

Ich verwende eine Masterseite. Hier etwas Code einer Inhaltsseite, wenn ein Button gedrückt wird. Die Methode SearchTitle füllt die ListView.

Einschlägiger Code:

        protected void Zoek()
    {
        // Clear listbox
        ListView1.DataSource = new DataTable();
        ListView1.DataBind();

        switch (ddlSearchType.SelectedValue)
        {
            case "Trefwoorden":
                SearchKeyword();
                break;
            case "Titel":
                SearchTitle();
                break;
            case "Inhoud":
                SearchContent();
                break;
        }
    }

Methode, die die ListView füllt

        private void SearchTitle()
    {
        // Make panel visible
        pnlResult.Visible = true;
        pnlKeyword.Visible = false;

        Search Search = new Search(txtSearchFor.Text);
        ListView1.DataSource = Search.SearchTitle();
        ListView1.DataBind();
    }

4 Stimmen

Ist dies Winforms oder WPF?

26voto

Tony Basallo Punkte 2744

Wie wäre es mit

DataSource = null;
DataBind();

23voto

JaredPar Punkte 699699

Versuchen Sie dies ...

myListView.DataSource = null;
myListView.Items.Clear();

7voto

Ich habe eine Suche auf diese und ich bin mit WPF c#. Nur für den Fall, dass Sie hier auch auf der Suche nach einer WPF-Lösung verwenden Sie die folgenden:

yourlistview.ItemsSource = null;

4voto

Treb Punkte 19459

Meine Vermutung ist, dass Clear() verursacht eine Changed Ereignis gesendet werden, das wiederum eine automatische Aktualisierung Ihrer Listenansicht aus der Datenquelle auslöst. Dies ist also ein Feature, kein Fehler ;-)

Haben Sie versucht myListView.Clear() anstelle von myListView.Items.Clear() ? Vielleicht funktioniert das besser.

3voto

Jack Rohme Punkte 41
listView.Items.Clear()
listView.Refresh() 

/e Aktualisierung wegen fehlender Erklärung. Oftmals reicht Clear() nicht aus, wenn unmittelbar Ereignisse/Methoden folgen. Es ist am besten, die Ansicht mit Refresh() nach einem Clear() zu aktualisieren, um eine sofortige Reflexion des ListView-Löschens zu erhalten. Dies hatte jedenfalls meine damit verbundenen Probleme gelöst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X