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

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

  • автор:

как очистить данные из 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 программным способом

  1. В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
  2. Задайте для свойства DataGridTableStyle.MappingName таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере используется свойство DataGrid.DataMember, которое уже должно быть задано.
  3. Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
  4. Вызовите метод 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 программным способом

  1. В области объявлений формы объявите новый экземпляр класса DataGridTableStyle.
  2. Задайте для свойства MappingNameDataGridTableStyle таблицу в источнике данных, к которой вы хотите применить стиль. В следующем примере кода используется свойство DataGrid.DataMember, которое уже должно быть задано.
  3. Добавьте новый объект DataGridTableStyle в коллекцию стилей таблиц сетки данных.
  4. Скройте столбец, задав для свойства 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(); 

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

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