Display <list> in Datagrid with 2 different classes c#

Asked

Viewed 108 times

1

I have two classes PET and CUSTOMER(Inherits from PERSON) `

    private int codPet;
    private string nome;
    private string especie;
    private string raca;
    private string porte;
    private string sexo;
    private string cor;
    private Cliente cliente; 


    public int CodPet { get => codPet; set => codPet = value; }
    public string Nome { get => nome; set => nome = value; }
    public string Especie { get => especie; set => especie = value; }
    public string Raca { get => raca; set => raca = value; }
    public string Porte { get => porte; set => porte = value; }
    public string Sexo { get => sexo; set => sexo = value; }
    public string Cor { get => cor; set => cor = value; }
    public Cliente Cliente { get => cliente; set => cliente = value; }  //AQUI EU GOSTARIA DE RETORNAR CLIENTE.COD

        public Pet()
         {
          cliente = new Cliente();

         }

`

CLIENT/PERSON

public class Client:Person { public string email;

`

public class Pessoa {

    private int cod;
    private string nome;
    private long cpf;
    private string cep;
    private string endereco;
    private string cidade;
    private string numero;
    private string telefone;
    private string email;


    public string Nome { get => nome; set => nome = value; }
    public long Cpf { get => cpf; set => cpf = value; }
    public string Cep { get => cep; set => cep = value; }
    public string Endereco { get => endereco; set => endereco = value; }
    public string Cidade { get => cidade; set => cidade = value; }
    public string Numero { get => numero; set => numero = value; }
    public string Telefone { get => telefone; set => telefone = value; }
    public string Email { get => email; set => email = value; }
    public int Cod { get => cod; set => cod = value; }
}

` inserir a descrição da imagem aqui

I did the search to return a list on the Datagrid where the class path was to return Pet.Cliente.Cod or just the client code. It’s bringing the whole class.

1 answer

4


One option is to replace the method ToString class Pessoa or Cliente to display the property Cod instead of Full Qualified Name. Example:

public class Pet
{
    public int CodPet   { get; set; } 
    public string Nome  { get; set; } 
    public string Especie { get; set; } 
    public string Raca  { get; set; } 
    public string Porte { get; set; } 
    public string Sexo  { get; set; } 
    public string Cor { get; set; }
    public Pessoa Cliente { get; set; } = new Pessoa();
}
public class Pessoa
{
    public string Nome     { get; set; } 
    public long Cpf        { get; set; } 
    public string Cep      { get; set; } 
    public string Endereco { get; set; } 
    public string Cidade   { get; set; } 
    public string Numero   { get; set; } 
    public string Telefone { get; set; } 
    public string Email    { get; set; } 
    public int Cod { get; set; }

    public override string ToString()
    {
        return this.Cod.ToString();
    }
}

Thus, when generating columns automatically, the result of the object Cliente becomes the Cod returned in the ToString.

Obs. I ignored the class Cliente using only Pessoa for example


Another option is to add Properties to class Pet to display what you need Cliente:

public class Pet
{
    public int CodPet   { get; set; } 
    public string Nome  { get; set; } 
    public string Especie { get; set; } 
    public string Raca  { get; set; } 
    public string Porte { get; set; } 
    public string Sexo  { get; set; } 
    public string Cor { get; set; }
    [Browsable(false)]
    public Pessoa Cliente { get; set; } = new Pessoa();
    public int ClienteCod { get => Cliente.Cod; }
}

In that case, I used the annotation Browsable to the property Cliente not be displayed on datagridview showing only ClienteCod.

  • 1

    public override string ToString()&#xA; {&#xA; return this.Cod.ToString();&#xA; }&#xA;} It worked super well!!

  • Mark as answer please =]

Browser other questions tagged

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