Подтвердить что ты не робот

С# Очистить все элементы в ListView

Я пытаюсь очистить свой список, но ясный метод не работает:

myListView.Items.Clear();

Это не работает. Когда я помещаю точку останова в эту строку, строка выполняется, но мой список не пуст. Как получилось?

Я заполняю свой список, устанавливая его источником данных в datatable.

Мое решение теперь состоит в том, чтобы установить источник данных на пустой datatable.

Мне просто интересно, почему ясно, не делайте трюк?

Я использую главную страницу. Здесь некоторый код страницы содержимого при нажатии кнопки. Метод SearchTitle заполняет ListView.

Соответствующий код:

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

Метод, который заполняет 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();
    }
4b9b3361

Ответ 1

Как насчет

DataSource = null;
DataBind();

Ответ 2

Попробуйте это...

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

Ответ 3

Я сделал поиск по этому вопросу, и я использую WPF С#. На всякий случай, когда вы тоже нашли решение WPF, используйте следующее:

yourlistview.ItemsSource = null;

Ответ 4

Я предполагаю, что Clear() вызывает событие Changed, которое, в свою очередь, запускает автоматическое обновление вашего списка из источника данных. Так что это функция, а не ошибка;-)

Вы пробовали myListView.Clear() вместо myListView.Items.Clear()? Возможно, это работает лучше.

Ответ 5

Не беспокоить Clear(). Просто сделайте это: ListView.DataSource = null; ListView.DataBind();

Ключ является databind(); Работает каждый раз для меня.

Ответ 6

Проблема возникает из-за того, что вы пытаетесь очистить весь список. Просто используйте listView1.Items.Clear();

Ответ 7

Попробуйте следующее:

myListView.ItemsSource = new List< DictionaryEntry >();

Ответ 8

Я бы предложил удалить строки из базового DataTable или если вам больше не нужен datatable, установите для источника данных значение null.

Ответ 9

Вероятно, ваш код работает, но он восстанавливается где-то после его очистки. Удостоверьтесь, что это не так. Это будет более полезно, если вы предоставите некоторый код. Где вы устанавливаете источник данных? Где вы привязываетесь к данным? Где вы очищаете список?

Ответ 10

listView.Items.Clear()
listView.Refresh() 

/e Обновление из-за отсутствия объяснения. Часто Clear() не достаточно в случае следующих событий/методов. Лучше всего обновить представление с помощью Refresh() после Clear() для мгновенного отражения очистки listView. Это, так или иначе, решило мои проблемы.

Ответ 11

Это немного поздно, но это работает для меня, по крайней мере, с использованием UWP

myListView.ItemsSource = null;

Ответ 12

Просто использование метода clear работает как шарм. ListView1.Items.Clear() Я думаю, что если он не работает, это может быть позиция, по которой вы размещаете этот код. Также можно попытаться свернуть источник данных.