Добавление новых столбцов в Winforms DataGridView с помощью кода - PullRequest
15 голосов
/ 28 января 2011

Я пытаюсь добавить количество столбцов 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 столбцы элемента управления не имеют ячейки шаблон.

Ответы [ 4 ]

15 голосов
/ 28 января 2011

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

9 голосов
/ 28 января 2011

Проблема связана с тем, что ваш 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() });
        }
2 голосов
/ 02 декабря 2013

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

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

for (int i = 1; i <= daysCount; i++)
{
    dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = i.ToString() });
}
1 голос
/ 27 августа 2012

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

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();

       }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...