Saltar al contenido

Al menos una de las columnas del control DataGridView no tiene plantilla de celda

Haz todo lo posible por entender el código bien previamente a adaptarlo a tu proyecto y si ttienes algo que aportar puedes comentarlo.

Solución:

Necesita dar el tipo de la columna. Si desea una columna de cuadro de texto, tendría que usar new DataGridViewTextBoxColumn(). Digamos que quiere un cuadro de texto y un cuadro combinado, tendría lo siguiente:

además, está llamando al nombre de la primera columna una y otra vez.

    DataGridViewColumn miejsce = new DataGridViewTextBoxColumn();
    miejsce.DataPropertyName = "Miejsce";
    miejsce.HeaderText = "Miejsce";
    miejsce.Name = "miejsceCollumn";

Cambie lo siguiente por el nombre de pila.

    DataGridViewColumn imie = new DataGridViewComboBoxColumn();
    imie.DataPropertyName = "Imie";
    imie.HeaderText = "Imię";
    imie.Name = "imieCollumn"

Si las columnas de DataGridView se crean mediante programación, entonces la propiedad AutoGenerateColumns de DataGridView debe establecerse en false.

Mi código es un ejemplo de un DataGridView capaz de mostrar cualquier DataTable y funciona perfectamente de esta forma:

        // Prepare the DataViewGrid
        dataGridView1.Columns.Clear();

        // Add each column to the grid according to the data table structure
        for (int i = 0; i < dataTable.Columns.Count; i++)
        
            DataGridViewColumn dataGridViewColumn = new DataGridViewColumn();
            DataGridViewCell dataGridViewCell = new DataGridViewTextBoxCell();
            dataGridViewColumn.DataPropertyName = dataTable.Columns[i].ColumnName;
            dataGridViewColumn.HeaderText = dataTable.Columns[i].ColumnName;
            dataGridViewColumn.CellTemplate = dataGridViewCell;
            dataGridViewColumn.Name = dataTable.Columns[i].ColumnName;
            dataGridView1.Columns.Add(dataGridViewColumn);
        

        // Set the DataSource for the binding
        bindingSource1.DataSource = dataTable;
        // Prevent unwanted columns autogeneration
        dataGridView1.AutoGenerateColumns = false;
        // Provide the binding to the DataGridView
        dataGridView1.DataSource = bindingSource1;

Solo necesitaba configurar el CellTemplate de la columna para resolver el problema.

DataGridViewColumn c = new DataGridViewColumn();
c.Name = "ColumnName";
c.HeaderText = "DisplayText";
c.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
c.CellTemplate = new DataGridViewTextBoxCell();
dataGridView1.Columns.Add(c);

Si entiendes que te ha sido de provecho este artículo, te agradeceríamos que lo compartas con el resto desarrolladores de esta forma contrubuyes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *