Treatment of Datagridview

Asked

Viewed 106 times

0

I have to present an object list in a Datagridview I am 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, Datagridview stays like this:

inserir a descrição da imagem aqui

He needed the product name to be presented in the product column. How can I do that?

  • He’s displaying the objects' names.. DEPOSIT and PRODUCT... you have to create properties for these fields and not create the columns automatically... You have how to put your HTML here?

  • Here’s an article on how to do that. http://www.devcurry.com/2010/11/bind-aspnet-gridview-to-custom-object.html

  • I’m making windows form and not web.

  • you have a name class Functions methodically configuracoesGrade what does she do with gridview? Something else you always attribute null before using Control, prq this? Nowhere in your Event btnAddAnimal, vc assigned the product name to a property. Instead of objEntrada.Deposito.Id = Convert.ToInt32(cboDeposito.SelectedValue); use the SelectedItem.

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 way

<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 that you weren’t getting, add the other fields using the same mode.

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

As you said you are using WINDOWS FORM.

One way you can do it is to create an object with the fields Product name and Nomedepoisto. Follows

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 is a way to do this with the . net auto Wizzard, but then it is more complicated to explain here.

http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial

  • I’m making a windows form application.

Browser other questions tagged

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