как очистить данные из datagrid в WPF
Я использую dataGrid WPF и заполняю его через bservableCollection.
ObservableCollection items = new ObservableCollection();
Теперь, чтобы очистить/очистить датагрид, чтобы снова использовать его, я использовал
dataGrid.items.Clear();
но данные все еще отображаются и активны в таблице.
Поделиться Источник 07 декабря 2016 в 23:07
3 ответа
У вас есть привязанная коллекция, поэтому в WPF вам нужно очистить коллекцию, а затем очистить сетку данных, потому что вы использовали наблюдаемую коллекцию.
Поделиться 08 декабря 2016 в 09:47
Чтобы очистить строки из DataGrid, используйте:
dataGrid.ItemsSource=null;
чтобы очистить столбцы:
dataGrid.Columns.Clear();
Поделиться 08 февраля 2017 в 12:22
Теперь, чтобы очистить/очистить датагрид, чтобы использовать его снова, я использовал dataGrid.items.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
Практическое руководство. Удаление или сокрытие столбцов элемента управления DataGridView в Windows Forms
Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.
Вы можете программным способом удалить или скрыть столбцы в элементе управления DataGrid Windows Forms с помощью свойств и методов объектов GridColumnStylesCollection и DataGridColumnStyle (которые являются членами класса DataGridTableStyle).
Удаленные или скрытые столбцы по-прежнему существуют в источнике данных, к которому привязана сетка, и доступ к ним по-прежнему осуществляется программным способом. Они просто больше не видны в сетке данных.
Если приложение не обращается к определенным столбцам данных и вы не хотите, чтобы они отображались в сетке данных, их, вероятно, не нужно включать в источник данных.
Удаление столбца из DataGrid программным способом
- В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
- Задайте для свойства DataGridTableStyle.MappingName таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере используется свойство DataGrid.DataMember, которое уже должно быть задано.
- Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
- Вызовите метод RemoveAt коллекции GridColumnStyles элемента DataGrid, указав индекс столбца для удаления.
' Declare a new DataGridTableStyle in the ' declarations area of your form. Dim ts As DataGridTableStyle = New DataGridTableStyle() Sub DeleteColumn() ' Set the DataGridTableStyle.MappingName property ' to the table in the data source to map to. ts.MappingName = DataGrid1.DataMember ' Add it to the datagrid's TableStyles collection DataGrid1.TableStyles.Add(ts) ' Delete the first column (index 0) DataGrid1.TableStyles(0).GridColumnStyles.RemoveAt(0) End Sub
// Declare a new DataGridTableStyle in the // declarations area of your form. DataGridTableStyle ts = new DataGridTableStyle(); private void deleteColumn() < // Set the DataGridTableStyle.MappingName property // to the table in the data source to map to. ts.MappingName = dataGrid1.DataMember; // Add it to the datagrid's TableStyles collection dataGrid1.TableStyles.Add(ts); // Delete the first column (index 0) dataGrid1.TableStyles[0].GridColumnStyles.RemoveAt(0); >
Скрытие столбца в DataGrid программным способом
- В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
- Задайте для свойства MappingNameDataGridTableStyle таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере кода используется свойство DataGrid.DataMember, которое уже должно быть задано.
- Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
- Скройте столбец, задав для свойства Width значение 0 и указав индекс столбца для скрытия.
' Declare a new DataGridTableStyle in the ' declarations area of your form. Dim ts As DataGridTableStyle = New DataGridTableStyle() Sub HideColumn() ' Set the DataGridTableStyle.MappingName property ' to the table in the data source to map to. ts.MappingName = DataGrid1.DataMember ' Add it to the datagrid's TableStyles collection DataGrid1.TableStyles.Add(ts) ' Hide the first column (index 0) DataGrid1.TableStyles(0).GridColumnStyles(0).Width = 0 End Sub
// Declare a new DataGridTableStyle in the // declarations area of your form. DataGridTableStyle ts = new DataGridTableStyle(); private void hideColumn() < // Set the DataGridTableStyle.MappingName property // to the table in the data source to map to. ts.MappingName = dataGrid1.DataMember; // Add it to the datagrid's TableStyles collection dataGrid1.TableStyles.Add(ts); // Hide the first column (index 0) dataGrid1.TableStyles[0].GridColumnStyles[0].Width = 0; >
См. также
- Практическое руководство. Изменение данных, отображаемых во время выполнения, в элементе управления DataGrid в Windows Forms
- Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Как очистить datagrid c wpf
Как корректно очистить только содержимое столбца DataGrid и удалить все строки, но чтобы хедеры остались, и при добавлении в таблицу опять появлялись строки?
Спросил kiborg
764 дн., 9 час., 55 мин. назад
Новые ответы
Если есть привязка DataGridView к источнику данных, то нужно очистить источник данных. Например, удалить все строки из таблицы или все элементы из списка. Также можно попробовать установить источник данных в null :
dataGridView.DataSource = null;
Если строки добавлялись в gridView вручную, то удалять их тоже нужно вручную, как-то так:
dataGridView.Rows.Clear();