web-dev-qa-db-ja.com

コードを介してWinformsDataGridViewに新しい列を追加する

特定の月の各日に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つにセルテンプレートがありません。

15
delete

新しいdatagridview列を作成すると、かなり空白になります。列の celltemplate を設定して、グリッド内のセルに表示するコントロールを認識できるようにする必要があります。あるいは、より強力な型付き列(DataGridViewTextBoxColumn)を使用する場合は、問題ないかもしれません。

15
Tony Abrams

この問題は、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() });
        }
9
Aaron McIver

最初に、テキストボックス列かコンボボックス列かを指定する必要があります。これを試してみてください。

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

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

テーブルを設定し、必要な列を追加します。次に使用します:

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

       }

最初の行は1ではなく0です。おそらく、エラーはこれらです。

1
devilkkw