Popular datagridview in C # with class with inheritance

0

Good people, I have the following situation:

public class TiposMateriais
{
     public int tipoCodigo { get; set; }
     public string tipoDescricao { get; set; }
}

public class Materiais
{
     public int matCodigo { get; set; }
     public string matDescricao { get; set; }
     public string matUnidadeMedida { get; set; }
     public string matDescricaoUnidade { get; set; }
     public string matMarcaMaterial { get; set; }
     public double matValorUnitario { get; set; }
     public TiposMateriais tiposMateriais { get; set; } 
}

In the DataGridView I can not display the fields: tiposMateriais.tipoCodigo and tiposMateriais.tipoDescricao .

    
asked by anonymous 13.01.2015 / 01:01

1 answer

1

Renato follows an example of how to populate your DataGridView using inherited classes.

Note: I tried to put it in a simple way for your understanding.

// Construtor do formulario, onde se inicia o carregamento dos componentes e dados
public Form1()
    {
        InitializeComponent();
        var materiais = GetList();
        LoadData(materiais);
    }


    // obtem uma lista de materiais - nesse caso, apenas 1 material
    private List<Material> GetList()
    {
        var material = new Material
        {
            Codigo = 1,
            DescricaoUnidade = "Descricao da minha unidade",
            Descricao = "Descricao",
            MarcaMaterial = "Marca do meu material",
            UnidadeMedida = "10",
            ValorUnitario = 1,

            TipoMaterial = new TipoMaterial
            {
                TipoCodigo = 123,
                TipoDescricao = "Alimentação"
            }
        };

        return new List<Material> { material };
    }

    // Preenche o DataGridView com os valores da lista
    private void LoadData(List<Material> materiais )
    {
        dataGridView.ColumnCount = 8;
        dataGridView.Columns[0].Name = "M Codigo";
        dataGridView.Columns[1].Name = "M Descricao da Unidade";
        dataGridView.Columns[2].Name = "M Descricao";
        dataGridView.Columns[3].Name = "M Marca do Material";
        dataGridView.Columns[4].Name = "M Unidade de Medida";
        dataGridView.Columns[5].Name = "M Valor Unitario";
        dataGridView.Columns[6].Name = "T Codigo";
        dataGridView.Columns[7].Name = "T Descricao";

        foreach (var material in materiais)
        {
            object[] row = {
                material.Codigo,
                material.DescricaoUnidade,
                material.Descricao,
                material.MarcaMaterial,
                material.UnidadeMedida,
                material.ValorUnitario,
                material.TipoMaterial.TipoDescricao,
                material.TipoMaterial.TipoCodigo,
            };

            dataGridView.Rows.Add(row);
        }
    }

Here is an example link to the application: link

Abs,

    
13.01.2015 / 14:18