Добавление новых столбцов в Winforms DataGridView с помощью кода

Я пытаюсь добавить N количество столбцов за каждый день месяца:

var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, month);

for (int i = 1; i <= daysCount; i++)
{
    dataGridView1.Columns.Add(new DataGridViewColumn() { HeaderText = i.ToString() });
}

Я получаю эту ошибку:

Как минимум один из DataGridView контрольные столбцы не имеют ячейки шаблон.

Ответы

Ответ 1

Когда вы создаете новый столбец datagridview, он довольно пуст. Вам нужно будет установить celltemplate столбца, чтобы он знал, какие элементы управления отображаются для ячеек в сетке. В качестве альтернативы я думаю, что если вы используете некоторые из более сильных типизированных столбцов (DataGridViewTextBoxColumn), тогда вы можете быть в порядке.

Ответ 2

Проблема связана с тем, что ваш DataGridViewColumn.CellTemplate не установлен.

Для этого сценария должен быть DataGridViewTextBoxCell как CellTemplate.

       var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, 1);

        for (int i = 1; i <= daysCount; i++)
        {
            dataGridView1.Columns.Add(new DataGridViewColumn() { HeaderText = i.ToString(), CellTemplate = new DataGridViewTextBoxCell() });
        }

Ответ 3

Сначала нужно указать, является ли столбец текстового поля или столбца со списком Попробуйте это, он будет работать

var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, month);

for (int i = 1; i <= daysCount; i++)
{
    dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = i.ToString() });
}

Ответ 4

установите таблицу и добавьте необходимые столбцы. затем используйте:

var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, 1);

for (int i = 0; i <= daysCount; i++)
        {
          i = dataGridView1.Rows.Add(new DataGridViewRow());


                        dataGridView1.Rows[i].Cells["YourNameCell"].Value = i.ToString();

       }

Строка Frist равна 0, а не 1. Вероятно, ваша ошибка.