Добавление колонок в DataGridVew

362
10 января 2017, 23:38

Добрый день!
Мне нужно вывести в 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 у колонки.

Answer 1

Взял форму, бросил на нее 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);
        }
    }
Все заработало. 

Вердикт - Вы неверно конструируете добавляемые колонки

READ ALSO
Datagridview. Страничное представление

Datagridview. Страничное представление

Как лучше всего организовать страничное представление данных в гриде? Примерно 10 000 строк

227
Обновить сущность в бд по id

Обновить сущность в бд по id

Исключение типа "SystemInvalidOperationException" возникло в EntityFramework

810
С# Microsoft life cam исключение An exception of type &#39;System.Windows.Markup.XamlParseException&#39;

С# Microsoft life cam исключение An exception of type 'System.Windows.Markup.XamlParseException'

У меня появилась проблема мне нужно отобразить изображение с камеры используя api lifecam в качестве примера я выбрал этот код

440
C# Asp Net Mvc,ViewBag

C# Asp Net Mvc,ViewBag

приветесть код контролера

362