Я пытаюсь использовать свой собственный текст заголовков в DataGridView, который автоматически заполняется из базы данных.Я попытался dataGridView1.AutoGenerateColumns = false
, затем сделать что-то вроде создания столбцов:
void createSearchResultHeader()
{
foreach(var prop in typeof(DB.Message).GetProperties())
{
var display =
typeof(DB.Message)
.GetProperty(prop.Name)
.GetCustomAttributes(typeof(System.ComponentModel.DisplayNameAttribute), inherit: false)
.FirstOrDefault() as System.ComponentModel.DisplayNameAttribute;
DataGridViewColumn col = new DataGridViewTextBoxColumn();
col.HeaderText = display.DisplayName;
dataGridView1.Columns.Add(col);
}
}
, а затем загрузить результаты с:
using (var conn = createConnection())
using (var da = new SQLiteDataAdapter(createCommand(conn)))
using (var dt = new DataSet())
{
dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
da.Fill(dt);
dg.DataSource = dt.Tables[0].DefaultView;
}
Проблема заключается в dataGridView1.AutoGenerateColumns = false
столбцысоздаются (я вызываю createSearchResultHeader()
при загрузке формы), но результат из базы данных пуст, но если я изменяю dataGridView1.AutoGenerateColumns = true
, результаты из базы данных загружаются успешно, но он добавляет свои собственные столбцы, а не использует те, которые созданы createSearchResultHeader()
.Как я могу это исправить?