Saltar al contenido

¿Cómo enlazar la lista a dataGridView?

Solución:

Utilice una BindingList y establezca la propiedad DataPropertyName-Property de la columna.

Intente lo siguiente:

...
private void BindGrid()
{
    gvFilesOnServer.AutoGenerateColumns = false;

    //create the column programatically
    DataGridViewCell cell = new DataGridViewTextBoxCell();
    DataGridViewTextBoxColumn colFileName = new DataGridViewTextBoxColumn()
    {
        CellTemplate = cell, 
        Name = "Value",
        HeaderText = "File Name",
        DataPropertyName = "Value" // Tell the column which property of FileName it should use
     };

    gvFilesOnServer.Columns.Add(colFileName);

    var filelist = GetFileListOnWebServer().ToList();
    var filenamesList = new BindingList<FileName>(filelist); // <-- BindingList

    //Bind BindingList directly to the DataGrid, no need of BindingSource
    gvFilesOnServer.DataSource = filenamesList 
}

puede ser un poco tarde pero útil para el futuro. Si no necesita establecer propiedades personalizadas de la celda y solo le preocupa el texto del encabezado y el valor de la celda, este código lo ayudará

public class FileName
{        
     [DisplayName("File Name")] 
     public string FileName {get;set;}
     [DisplayName("Value")] 
     public string Value {get;set;}
}

y luego puede vincular la lista como fuente de datos como

private void BindGrid()
{
    var filelist = GetFileListOnWebServer().ToList();    
    gvFilesOnServer.DataSource = filelist.ToArray();
}

Para obtener más información, puede visitar esta página Vincular la lista de objetos de clase como fuente de datos a DataGridView

Espero que esto te ayudará.

Sé que esto es viejo, pero esto me colgó por un tiempo. Las propiedades del objeto en su lista deben ser “propiedades” reales, no solo miembros públicos.

public class FileName
{        
     public string ThisFieldWorks {get;set;}
     public string ThisFieldDoesNot;
}
¡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 *