DataGridView автоматически генерирует столбцы - PullRequest
9 голосов
/ 19 марта 2012

В моей форме Windows у меня есть компонент DataGridView, который связан с BindingSource. BindingSource является источником данных объекта для объекта EntityFramework.

Иногда столбцы в моем DataBridView обновляются. Иногда все свойства добавляются как столбец, но теперь он также удалил все мои столбцы. Итак, я потерял все свои настройки.

Когда к столбцам автоматически добавляются?

(я использую VS.NET 2010)

Обновление:

//
// Summary:
//     Gets or sets a value indicating whether columns are created automatically
//     when the System.Windows.Forms.DataGridView.DataSource or System.Windows.Forms.DataGridView.DataMember
//     properties are set.
//
// Returns:
//     true if the columns should be created automatically; otherwise, false. The
//     default is true.
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Advanced)]
[DefaultValue(true)]
public bool AutoGenerateColumns { get; set; }

Свойство не отображалось в конструкторе, и «скрыть расширенные свойства» не проверено.

Обновление 2: Когда я обновляю свою модель структуры сущностей, все столбцы добавляются снова. Я могу только установить свойство в конструкторе формы. Это очень раздражает.

Ответы [ 5 ]

5 голосов
/ 19 марта 2012

Добавьте этот код или измените свойство DataGridView AutoGenerateColumns на false

DataGridView1.AutoGenerateColumns=false;
5 голосов
/ 19 марта 2012

Я на самом деле не знаю, когда это произойдет, но я склонен создавать все столбцы вручную. Я создаю столбцы в конструкторе и задаю для свойства AutoGenerateColumns значение false в своем коде.

2 голосов
/ 20 февраля 2015

Установите для свойства AutoGenerateColumns значение False, но не забывайте делать это непосредственно перед привязкой данных. например: DataGridView1.AutoGenerateColumns=false; DataGridView1.DataSource=getData();

По умолчанию установлено значение True.

1 голос
/ 10 декабря 2014

Попробуйте оставить первый из автоматически сгенерированных столбцов и установите его видимость false.Если это не помогает, попробуйте оставить все с Visible = false.Извините за плохой английский.

0 голосов
/ 20 июня 2018

У меня была такая же проблема. Мне не удалось найти свойство AutoGenerate в моем коде.

По причинам, которые я не понимаю, у моего DataGridView нет свойства AutoGenerate, которое я вижу в своем коде VB.

Я не вижу флажок в диалоговом окне Редактировать столбцы.

Я не вижу свойства AutoGenerate в представлении свойств сетки.

У меня Visual Studio Community 2017.

Вот мои свойства класса:

Открытое свойство BatchId As Integer
Код публичной собственности в виде строки
Публичное свойство считать как целое число
Публичное свойство Описание как строка
Идентификатор публичной собственности как целое число

Итак, вот что я сделал:

  1. Я пошел к конструктору форм.
  2. Я щелкнул правой кнопкой мыши на DataGridView.
  3. Я выбрал Редактировать столбцы.
  4. Я убедился, что в каждом столбце для поля DataPropertyName указано имя свойства класса.

Когда я запускал свое приложение, DataGridView отображал только те столбцы в моем классе.

...