Добрый день!
Мне нужно вывести в 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);
}
}
Все заработало.
Вердикт - Вы неверно конструируете добавляемые колонки
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как лучше всего организовать страничное представление данных в гриде? Примерно 10 000 строк
Исключение типа "SystemInvalidOperationException" возникло в EntityFramework
У меня появилась проблема мне нужно отобразить изображение с камеры используя api lifecam в качестве примера я выбрал этот код