2011-01-28 9 views
15

Estoy intentando añadir un número N de columnas para cada día de un mes determinado:La adición de nuevas columnas a un WinForms DataGridView a través de código

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

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

estoy recibiendo este error:

At least one of the DataGridView control's columns has no cell template.

Respuesta

15

Cuando crea una nueva columna de vista de tabla de datos, está bastante en blanco. Tendrá que configurar el celltemplate de la columna para que sepa qué controles mostrar para las celdas de la grilla. Alternativamente, creo que si utiliza algunas de las columnas más fuertes escritas (DataGridViewTextBoxColumn), entonces puede estar bien.

+5

+1: el uso de la columna mecanografiada fuerte es la solución – digEmAll

8

El problema se debe a que su DataGridViewColumn.CellTemplate no se configuró.

Para este escenario, un DataGridViewTextBoxCell como CellTemplate debería ser suficiente.

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

establezca su tabla y añada las columnas necesarias. a continuación, utilizar:

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

     } 

fila Frist es 0 y no por 1. probabily su error son éstos.

2

es necesario especificar en primer lugar si se trata de una columna de texto o columna cuadro combinado Prueba este va a trabajar

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

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