通过代码将新列添加到Winforms DataGridView

时间:2011-01-28 20:17:39

标签: c# .net 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   control的列没有单元格   模板。

4 个答案:

答案 0 :(得分:15)

当您创建新的datagridview列时,它非常空白。您需要设置列的celltemplate,以便它知道要为网格中的单元格显示哪些控件。或者我认为如果你使用一些更强大的类型列(DataGridViewTextBoxColumn),那么你可能没问题。

答案 1 :(得分:9)

问题源于您的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 :(得分:2)

您需要先指定它是文本框列还是组合框列 试试这个它会起作用

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

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

答案 3 :(得分:1)

设置表并添加所需的列。 然后使用:

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.可能你的错误是这些。