none
DataPropertyName - DataGridView RRS feed

  • Pergunta

  • Olá, estou tentando listar dados de um array num datagridview. Quando eu coloco o array como o datasource do datagrid, os dados aparecem corretamente, porém o meu array há um objeto, e eu gostaria de listar as propriedades desse objeto no grid tbm. Já tentei de várias formas e não obtive sucesso.

    Quando eu coloco
    Me.Preco.DataPropertyName = "oPreco" - No grid aparece o tipo do objeto (até aqui tudo bem)
    Me.Preco.DataPropertyName = "oPreco.ValorConsultor" - Eu imaginei que isso já acessaria a propriedade, porém não acessa.

    Há Alguma forma de fazer isso?:
    quarta-feira, 6 de setembro de 2006 16:55

Todas as Respostas

  • Você poderia criar as colunas na ordem que desejar ao invés de deixar o DataGridView as criar automaticamente. Seria algo assim:

    seuDataGridView.AutoGenerateColumns = False
    Dim txt1 as New DataGridViewTextBoxColumn()
    Dim txt2 as New DataGridViewTextBoxColumn()
    Dim txt3 as New DataGridViewTextBoxColumn()


    txt1.HeaderText = "Codigo" 'Titulo da coluna
    txt1.DataPropertyName = "AndCod" 'Nome da coluna do objeto que carregará o DataGridView

    txt2.HeaderText = "Localidade"
    txt2.DataPropertyName = "AndLod"

    txt3.HeaderText = "Descrição"
    txt3.DataPropertyName = "AndDesc"

    seuDataGridView.Columns.Add(txt1)
    seuDataGridView.Columns.Add(txt2)
    seuDataGridView.Columns.Add(txt3)

    E somente após isso, você carregaria o DataGridView

    Espero ter respondido ou ajudado;

    Abraços;

     

    quarta-feira, 13 de setembro de 2006 18:53
  • Mas César, vc não respondeu a pergunta do nosso amigo..

    Ele quer carregar o DataGridView com dados do objeto que já está dentro de outro, algo como em um array de Clientes, ele tb qr mostrar dados do objeto Endereço q está dentro do objeto cliente.

    Como:

    Cliente cliente = new Cliente();
    cliente.Nome = "césar";
    cliente.Endereco = new Endereco();
    cliente.Endereco.Rua = "rua X, 1231";

    list<Cliente> lista = new list<Cliente>();

    lista.Add(cliente);

    meuDataGridView.AutoGenerateColumns = false;
    DataGridViewTextBoxColumn txtnome = new DataGridViewTextBoxColumn();
    DataGridViewTextBoxColumn txtrua  = new DataGridViewTextBoxColumn();

    txtnome.HeaderText = "Nome";
    txtnome.DataPropertyName = "Nome";

    txtrua.HeaderText = "Rua";
    txtrua.DataPropertyName = "Endereco.Rua";

    meuDataGridView.Columns.Add(txtnome);
    meuDataGridView.Columns.Add(txtrua);

    meuDataGridView.DataSource = lista;

    O problema, é q na coluna Rua q será exibida no grid, não aparece nada.

    Grato pela atenção,

    Kauê Righi
    Desenvolvedor .Net
    terça-feira, 19 de setembro de 2006 21:11
  • Fabio, bom dia!

    Caso permaneça sua dúvida, por gentileza me informe, se puder postar todo seu código fonte relacionado, posso tentar lhe ajudar.

    Kauê, bom dia!

    Acredito que o objeto criado por você (intanciando) cliente, tenha um erro em sua propriedade Endereco.Rua, caso queira posso tentar ajudar, se puder postar sua classe cliente.

    Abraços;

     

     

    quarta-feira, 20 de setembro de 2006 12:36
  • Então César, eu postei porque tenho a mesma dúvida.

    Tenho uma Classe Reserva, e nela eu tenho outros objetos, como o objeto Sala.
    Faco uma busca no banco, e retorno um iList<Reserva> com todas as reservas cadastradas e seus objetos preenchidos.

    vou colocar aqui a minha classe e a de Sala pra exemplificar:

    namespace Classes.reserva {
        public class Reserva {

            private int _id;
            public int Id {
                get { return _id; }
                set { _id = value; }
            }

            private sala.Sala _sala;
            public sala.Sala Sala {
                get { return _sala; }
                set { _sala = value; }
            }

            private DateTime _horaInicio;
            public DateTime HoraInicio {
                get { return _horaInicio; }
                set { _horaInicio = value; }
            }

            private DateTime _horaFim;
            public DateTime HoraFim {
                get { return _horaFim; }
                set { _horaFim = value; }
            }

            private string _assunto;
            public string Assunto {
                get { return _assunto; }
                set { _assunto = value; }
            }

            private usuario.Usuario _autor;
            public usuario.Usuario Autor {
                get { return _autor; }
                set { _autor = value; }
            }

            private usuario.Usuario _solicitante;
            public usuario.Usuario Solicitante {
                get { return _solicitante; }
                set { _solicitante = value; }
            }

            private System.Collections.IList _equipamento;
            public System.Collections.IList Equipamento {
                get { return _equipamento; }
                set { _equipamento = value; }
            }

            private statusreserva.StatusReserva _status;
            public statusreserva.StatusReserva Status {
                get { return _status; }
                set { _status = value; }
            }


        }
    }
    namespace Classes.sala {

        public class Sala {

            private int _id;
            private string _nome;
            private string _descricao;
            private int _lugares;
            private bool _ativo;

            public int Id
            {
                get { return _id; }
                set { _id = value; }
            }

            public string Nome
            {
                get { return _nome; }
                set { _nome = value; }
            }

            public string Descricao
            {
                get { return _descricao; }
                set { _descricao = value; }
            }

            public int Lugares
            {
                get { return _lugares; }
                set { _lugares = value; }
            }

            public bool Ativo
            {
                get { return _ativo; }
                set { _ativo = value; }
            }

        }

    }

    e pra poder preencher o DataGridView, eu jogo no DataSource a minha iList...
    Todos os campos de Tipos comuns aparecem normalmennte, mas não consigo mapear para aparecer no gridview o Nome da Sala, por exemplo.

    Se vc souber a solução..

    Obrigado,

    Kauê Righi



    quarta-feira, 20 de setembro de 2006 13:49
  • Kauê, nessa parte do código não vi erro algum, o ideal seria eu ver o todo, se puder me enviar cesar.robert@uol.com.br...

    Para ver como está instanciando o objeto, herdando ou importando...

    {  }s

     

    quarta-feira, 20 de setembro de 2006 16:51
  • Caro César,

    Fiz umas pesquisas, e acho que não é mesmo possível exibir uma "propriedade de uma propriedade" do objeto que forma a "linha".

    Porém, consigo sobrescrever o ToString, e assim apresentar o que quero, sem muito esforço.

    Obrigado pela ajuda.

    Abraços
    quarta-feira, 20 de setembro de 2006 17:32
  • OK Kauê,

    Geralmente quando eu necessito popular um DataGridView que vem de uma classa uso um objeto Generico desta classa, caso queira tenho um exemplo....

    {  }s

     

     

    quarta-feira, 20 de setembro de 2006 18:00
  • Se você puder, mande pro meu e-mail: kauerighi@terra.com.br ou então, mostre aqui. Mas é necessário, que o seu objeto que será listado com Generic, tenha um outro dentro, e que você consiga exibeir os dados desse último.

    Obrigado, mais uma vez!

    []s
    quarta-feira, 20 de setembro de 2006 20:37
  • César tudo bem, estavo olhando sua conversa com o Kauê e estou com a mesmo dúvida sobre popular uma DataGridView, será que é possivel vc mandar esse exemplo para o meu e-mail também... i9agora@gmail.com

     

     

    Obrigado

    Gustavo

    sábado, 17 de novembro de 2007 01:41
  •  

    Boa tarde, sei que faz um tempo, mas você poderia me mandar um exemplo tb.

    edsonscosta@gmail.com

     

     

    Edson.

    quinta-feira, 10 de janeiro de 2008 19:05
  • Ola Edson estou tambem com um problema parecido e já dei uma vasculhada na net e não achei nada que pudesse ajudar..caso você tenha o exemplo e possa me passar.

    Desde já agradeço.
    abcsa@hotmail.com ou  tec.anderson@gmail.com

    Anderson
    quarta-feira, 23 de janeiro de 2008 16:33
  • Tenta, mais ou menos assim...

     


    No evento RowDataBound do seu GridView, você converte o DataItem que vem como parâmetro em um objeto do tipo Pessoa e depois exibe isso na linha. Algo mais ou menos como:

    Code Snippet
     
    If e.Row.RowType = DataControlRowType.DataRow Then
         Dim p As Pessoa = DirectCast(e.Row.DataItem, Pessoa)

         If Not IsNothing(p.Celular) && p.Celular.Count > 0 Then
              For Each t In p.Celular
                  e.Row.Cells( 3).Text += t.NumeroTel & " / "
              Next
         End If
    End If
    quinta-feira, 24 de janeiro de 2008 20:00
  • Por favor estou com a mesma dúvida do Fabio alguém poderia postar um exemplo ai de como resolver isso, se é que tem jeito ?
    terça-feira, 14 de julho de 2009 01:09