DataGridView Handling

0

I have to display an object list in a DataGridView I'm doing as follows:

class EntradaModel
{

    int codigo, motivo, anterior, quantidade;
    string observacao, tipo;
    DepositoModel deposito = new DepositoModel();
    ProdutoModel produto = new ProdutoModel();

    public int Codigo
    {
        get { return codigo; }
        set { codigo = value; }
    }

    public ProdutoModel Produto
    {
        get { return produto; }
        set { produto = value; }
    }

    public DepositoModel Deposito
    {
        get { return deposito; }
        set { deposito = value; }
    }
}

Form:

public partial class EntradaEstoque : Form
{
   List<EntradaModel> listEntrada;
   EntradaModel objEntrada;

    public EntradaEstoque()
    {
        InitializeComponent();
        listEntrada = new List<EntradaModel>();
        objEntrada = new EntradaModel();
    }


    private void btnAddAnimal_Click(object sender, EventArgs e)
    {
        if (verificaCampos())
        {
            objEntrada = null;
            objEntrada = new EntradaModel();
            objEntrada.Produto.Codigo = Convert.ToInt32(txtCodigoProduto.Text);
            objEntrada.Deposito.Id = Convert.ToInt32(cboDeposito.SelectedValue);
            objEntrada.Motivo = Convert.ToInt32(cboMotivo.SelectedValue);
            objEntrada.Quantidade = Convert.ToInt32(txtQuantidade.Text);
            objEntrada.Observacao = txtObservacao.Text;
            listEntrada.Add(objEntrada);
            cboDeposito.Enabled = false;

            carregarGrid();

            limparCampos();
        }
    }

    public void carregarGrid()
    {
        Functions.configuracoesGrade(dgvProduto);
        dgvProduto.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        dgvProduto.DataSource = null;
        dgvProduto.DataSource = listEntrada;
    }

However, the DataGridView looks like this:

You needed the product name to appear in the product column. How can I do this?

    
asked by anonymous 07.12.2015 / 15:03

1 answer

1

Hello

2 Points to be made.

1 - In your class add 2 properties, which are.

Assuming the Product Code is an INT

public int CodigoProduto
    {
        get { return this.Produto.Codigo; }
    }

//Assumindo que NomeDeposito é a propriedade dentro de Deposito
public String NomeDeposito
    {
        get { return this.Deposito.NomeDeposito; }
    }

In your GridView, do this

<asp:GridView ID="dgvProduto"  AutoGenerateColumns="false" runat="server">
   <Columns>
      <asp:BoundField DataField="CodigoProduto" HeaderText="Produto" />
      <asp:BoundField DataField="NomeDeposito" HeaderText="Depósito" />
   </Columns>
</asp:GridView>

I just showed you how to do the 2 you were not getting, add the other fields using the same mode.

EDIT ---------------------------------------------- -----------------------------

As you said you are using WINDOWS FORM.

One way you can do this is to create an object with the ProductName and DateName fields. Follow

public class NovoObjeto {
   int codigo, motivo, anterior, quantidade;
    string observacao, tipo, deposito,produto;

    public int Codigo
    {
        get { return codigo; }
        set { codigo = value; }
    }

    public Int CodigoProduto
    {
        get { return produto; }
        set { produto = value; }
    }

    public String NomeDeposito
    {
        get { return deposito; }
        set { deposito = value; }
    }
}


public void carregarGrid()
{
    Functions.configuracoesGrade(dgvProduto);
    dgvProduto.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
    dgvProduto.DataSource = null;

    List<NovoObjeto> novaLista = new List<NovoObjeto>
    foreach(EntradaModel e in listaEntrada){


     novaLista.add(new NovoObjeto(){ PARAMETROS = e.Parametros });
    }

    dgvProduto.DataSource = novaLista;
}

There's a way to do this with .net auto wizzard, but it's more complicated to explain here.

link

    
07.12.2015 / 16:11