Как очистить datagrid c wpf
Перейти к содержимому

Как очистить datagrid c wpf

  • автор:

Как очистить datagrid c wpf

Как корректно очистить только содержимое столбца DataGrid и удалить все строки, но чтобы хедеры остались, и при добавлении в таблицу опять появлялись строки?

Спросил kiborg
764 дн., 9 час., 55 мин. назад

Новые ответы

Если есть привязка DataGridView к источнику данных, то нужно очистить источник данных. Например, удалить все строки из таблицы или все элементы из списка. Также можно попробовать установить источник данных в null :

dataGridView.DataSource = null; 

Если строки добавлялись в gridView вручную, то удалять их тоже нужно вручную, как-то так:

dataGridView.Rows.Clear(); 

wpf datagrid очистить

теперь мне нужно очистить DataGrid dgrid.Items.Clear(); получаю System.InvalidOperationException: «Операция недопустима, когда ItemsSource используется. Вместо этого получите доступ и измените элементы с помощью ItemsControl.ItemsSource.» как очистить DataGrid ?

Отслеживать
задан 2 фев 2020 в 15:10
930 7 7 серебряных знаков 26 26 бронзовых знаков

Когда вы пишете dgrid.Items.Add(. ) (или как там у него правильно), то в таком варианте коллекцией данных будет являться сам контрол, тогда вы можете уже сделать dgrid.Items.Clear() , что приведет к очистке его данных. Когда вы делаете dgrid.ItemsSource = ds.Tables[0].DefaultView; , то контрол лишь отображает данные из заданной коллекции, не более. То есть в таком случае у вас источником данных является ds.Tables[0].DefaultView , которую вам и надо очищать. Ну или делайте костыли, обнуляйте ItemsSource . Вообще, советую использовать привязки, ибо текущий ваш подход ужасен.

2 фев 2020 в 15:14

Вы назначаете ItemsSource, для очистки тоже работайте с ним, т.е. dataGrid.ItemsSource = null; Так же из MSDN: Если задано свойство ItemsSource, Items коллекция становится доступна только для чтения и имеет фиксированный размер. Если ItemsSource используется, установка свойства ItemsSource в значение null удаляет коллекцию и восстанавливает использование Items

Очистка DataGrid

Author24 — интернет-сервис помощи студентам

Проблема в том, что почему то старые записи не обновляются.

Например, если отправить запрос

SELECT Id, name FROM workers

Выведется всё нормально, как и должно.

Если же после этого отправить запрос

SELECT * FROM workers

то ничего в DataGrid не измениться.

Но если, добавить через INSERT новую строку, и попытаться отправить прошлый запрос, то старые так и останутся с первого запроса, а новый выведет все столбцы.

Я уже копался в интернете и искал как можно очистить DataGrid, чтобы всё заработало.

1 2 3
BindingOperations.ClearAllBindings(UsersDataGrid); UsersDataGrid.ItemsSource = null; UsersDataGrid.Columns.Clear();

Но ничего не помогла. Также пробовал выводить через DataContext, но тоже ничего.

В чём может быть проблема?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

очистка datagrid
Здравствуйте, уважаемые форумчане! Нужна помощь в WPF. Как можно очистить таблицу DataGrid.

DataGrid: установить фокус на строку DataGrid, а не на сам DataGrid
Добрый день! Есть следующий код: public partial class MainWindow : Window < .

Как зеркально отобразить dataGrid одного окна в dataGrid в другом окне?
Здравствуйте. Столкнулся с проблемой. Не знаю, как отобразить зеркально dataGrid одного окна, в.

DataGrid+ObjectDataProvider+DataTable после изменения источника обновить DataGrid
Окно с DataGrid 1. В ресурсах окна объявлен Instance датапровайдера с методом, возвращающим.

Эксперт .NET

15282 / 10551 / 2758
Регистрация: 21.04.2018
Сообщений: 31,218
Записей в блоге: 2

ЦитатаСообщение от Cicle Посмотреть сообщение

В чём может быть проблема?

В первую очередь в нарушении принятой для WPF приложения архитектуры приложения.

В Шарпе (не только в WPF) для «общения с БД» принято реализовывать паттерн Репозиторий (Данных).
Почти всегда он реализуется на EF.

Для WPF нужно реализовывать паттерн MVVM.
И к UI элементам обращаться только на XAML.
Для начинающих лучше, вообще, никогда даже не открывать файлы «*.xaml.cs».

Регистрация: 18.01.2021
Сообщений: 183
Записей в блоге: 8

ЦитатаСообщение от Cicle Посмотреть сообщение

Хочу вывести в DataGrid ответ на запрос к БД.
Так работает:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
//-- SELECT //============================================================================== public void ЗапросДанных() { try { wspErr = null; if (!bl_Разрешение) return; bl_Разрешение = false; string _str = str_ГруппаПФ?.Trim(); //-- Выполним хранимую процедуру. Получим список сущностей wsp.sp_Параметры(2); //-- Построение параметров хранимой процедуры wsp.sp_Параметр("str_Группа", (string.IsNullOrEmpty(_str)) ? DBNull.Value : (object)(_str + "%")); wsp.sp_Параметр("int_Limit", гп.max_Выборка); xrow = null; lst_Entity = null; lst_Entity = new Listrow_Entity>(); wsp.Entity_SP("au_Группы_sel", wsp.sp_Sel, RowToEntity); if((wspErr = wsp.wspErr) != null) return; dgv_Entity.ItemsSource = null; if (lst_Entity != null) { //-- Флаг размера выборки lbl_ФРВ.Visibility = (lst_Entity.Count >= гп.max_Выборка) ? Visibility.Visible : Visibility.Hidden; oc_Entity = new ObservableCollectionrow_Entity>(lst_Entity); lst_Entity = null; dgv_Entity.ItemsSource = oc_Entity; if (oc_Entity.Count != 0) dgv_Entity.SelectedIndex = 0; } } catch (Exception ex) { wspErr = ex.Message; } finally { if (wspErr != null) MessageBox.Show(wspErr, caption_Entity, MessageBoxButton.OK); wspErr = null; bl_Разрешение = true; //-- Разрешение выполнения функционала компонент } }

где:
dgv_Entity — WPF DataGrid
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Удалить выбранную строку в DataGrid, если DataGrid содержит коллекцию
Здравствуйте! Скажите пожалуйсто, как удалить выбраную строку в DataGrid, если DataGrid содержит.

Как применить стиль строки dataGrid к определенному dataGrid
Доброго всем времени суток! Спасибо, что уделили мне свое время! Есть стиль для строк датагрида.

Привязка данных к DataGrid внутри DataGrid.RowDetailsTemplate
Это может показаться запутанным,но постарайтесь понять. У меня есть List в котором хранятся объекты.

Datagrid в ячейке Datagrid c корректным отображением границ
Задача поместить связанные данные (две таблицы Sql связаны по id ) в виде таблицы ячейки одной их.

Binding данных в Datagrid внутри Datagrid
Приветствую! Есть у меня такая модель данных: public class Group < .

DataGrid в другом dataGrid
Всем привет. Подскажите пожалуйста если можно, то как сделать. DataGrid привязан к данным. Добавлю.

Или воспользуйтесь поиском по форуму:

Как удалить выбранную строку в Datagrid?

FoggyFinder

Anton_repr, вопрос абсолютно нормальный, затем и здесь чтобы узнавать новое и делиться опытом.

После удаления из DataGrid вы хотите одновременно удалить и из базы, или синхронизацию делаете после завершения работы?

Anton_repr @Anton_repr Автор вопроса
Foggy Finder, мне необходимо одновременно удалить и из базы, и из DataGrid

FoggyFinder

Foggy Finder @FoggyFinder

или, вам придется, после каждого изменения извлекать актуальную информацию из БД.

То есть для каждой таблицы создавать классы, например:

public class Ingredient < public int ID < get; >public string Name < get; >public Ingredient(int id, string name) < Name = name; >>

и тогда нужно будет изменить метод FillGrid на IEnumerable GetIngedients().

Ingredients.Clear(); foreach(var ingredient in GetIngredients()) Ingredients.Add(ingredient);

но лучше поискать метод-расширения AddRange для ObservableCollection чтобы шустрее работало.

SpacePurr

Anton_repr, склоняюсь к применению Entity Framework как написал Foggy Finder выше, но у меня получилось решить вашу задачу

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *