Popular C# datagridview with inheritance class

Asked

Viewed 643 times

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 Datagridview I cannot show the fields: tiposMateriais.tipoCodigo and tiposMateriais.tipoDescricao.

  • 1

    Hello Renato. Welcome to Stack Overflow in Portuguese. For your question to get better it would be important to put the code snippet where you are creating the class instance and trying to access (to show) these two properties.

  • 2

    It has nothing to do with the question but allow me a suggestion: do not prefix the property names with a class abbreviation, tiposMateriais.Codigo gets better than tiposMateriais.tipoCodigo

1 answer

1

Renato follows an example of how to fill your Datagridview using classes with inheritance.

Note: I tried to put 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);
        }
    }

Follow link with example of the application: http://www.4shared.com/rar/vnddNuV6ce/stackoverflow46628.html

Abs,

Browser other questions tagged

You are not signed in. Login or sign up in order to post.