web-dev-qa-db-fra.com

C # Effacer tous les éléments de ListView

J'essaie d'effacer ma liste, mais la méthode clear ne fonctionne pas:

myListView.Items.Clear();

Ça ne marche pas. Lorsque je mets un point d'arrêt sur cette ligne, celle-ci est exécutée, mais ma liste n'est pas vide. Comment venir??

Je remplis ma liste en définissant sa source de données sur une source de données.

Ma solution maintenant est de définir la source de données sur un datatable vide.

Je me demande juste pourquoi effacer ne fait pas le tour?

J'utilise une page maître. Voici le code d'une page de contenu lorsqu'un bouton est enfoncé. La méthode SearchTitle remplit le ListView.

Code pertinent:

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

Méthode qui remplit le ListView

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

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

Que diriez-vous

DataSource = null;
DataBind();
22
Tony Basallo

Essaye ça ...

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

J'ai fait une recherche à ce sujet et j'utilise WPF c #. Au cas où vous chercheriez également une solution WPF, utilisez les éléments suivants:

yourlistview.ItemsSource = null;

6
user1656632

Mon hypothèse est que Clear() provoque l'envoi d'un événement Changed, ce qui déclenche à son tour une mise à jour automatique de votre liste d'affichage à partir de la source de données. C'est donc une fonctionnalité, pas un bug ;-) 

Avez-vous essayé myListView.Clear() au lieu de myListView.Items.Clear()? Peut-être que ça marche mieux.

4
Treb

Ne vous embêtez pas avec Clear (). Faites simplement ceci: ListView.DataSource = null; ListView.DataBind ();

La clé est le databind (); Fonctionne chaque fois pour moi.

2
Dave Howell

Le problème survient parce que vous essayez d'effacer toute la zone de liste .. Utilisez simplement listView1.Items.Clear (); 

2
saurabh gupta

Essayez avec ceci:

myListView.ItemsSource = new List< DictionaryEntry >();
1
nisan
listView.Items.Clear()
listView.Refresh() 

/ e Mise à jour par manque d'explication. Souvent, Clear () ne suffit pas dans le cas d'événements ou de méthodes immédiats suivants. Il est préférable de mettre à jour la vue avec Refresh () après un Clear () pour une réflexion instantanée de la suppression de la liste. Cela, de toute façon, avait résolu mes problèmes connexes. 

0
Jack Rohme

Je suggérerais de supprimer les lignes du DataTable sous-jacent ou, si vous n'avez plus besoin du datatable, définissez la source de données sur null.

0
Martin Moser

Votre code fonctionne probablement, mais il rebondit quelque part après l'avoir effacé. Assurez-vous que ce n'est pas le cas. Ce sera plus utile si vous fournissez du code. Où définissez-vous votre source de données? Où êtes-vous la liaison de données? Où effacez-vous la liste?

0
Serhat Ozgel