Добрый день!
Мне нужно вывести в DataGridView колонки с именами субъектов (класс Subject) из коллекции subjects, но при этом присвоить колонке в поле Tag идентификатор субъекта.
Вроде делаю все правильно, но в DataGridView не отображаются колонки:
for (int i = 0; i < subjects.Count; i++)
{
var column = new DataGridViewColumn();
column.Name = "Col" + i;
column.HeaderText = subjects[i].Name;
column.Tag = subjects[i].SubjectID;
dgvJournal.Columns.Add(column);
}
После этого отображается только первая колонка и все. Если указывать имя колонки и текст в ручную, то все нормально работает:
for (int i = 0; i < subjects.Count; i++)
{
dgvJournal.Columns.Add("Col" + i, subjects[i].Name);
}
Но так я не могу задать значение Tag у колонки.
Взял форму, бросил на нее dataGridView1 и вставил Ваш код (с небольшими упрощениями в конструктор формы:
public Form1()
{ InitializeComponent();
for (int i = 0; i < 3; i++)
{
DataGridViewColumn column = new DataGridViewColumn();
column.Name = "Col" + i.ToString();
column.HeaderText = "HeaderText_"+i.ToString();
column.Tag = i;
dataGridView1.Columns.Add(column);
}
}
На строкеdataGridView1.Columns.Add(column);получилExceptionо том, чтоCellTemplate == null` для добавляемой колонки.
После этого я ручками в дизайнере добавил колонку с настройками по умолчанию и изменил конструктор:
public Form1()
{
InitializeComponent();
for (int i = 0; i < 3; i++)
{
DataGridViewColumn column = new DataGridViewColumn(dataGridView1.Columns[0].CellTemplate);
column.Name = "Col" + i.ToString();
column.HeaderText = "HeaderText_"+i.ToString();
column.Tag = i;
dataGridView1.Columns.Add(column);
}
}
Все заработало.
Вердикт - Вы неверно конструируете добавляемые колонки
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости