LISTA EM C#

PAULOOLIVEIRA 15/11/2014 08:46:57
#442544
Duvida de iniciante amigos:

Tenho uma classe que retorna uma lista com dados.... nao estou conseguindo carregar os dados num listbox.... atualmente faço assim:

lista.DataSource = autoriza.listarAutorizaGrupo();

Quando retorna e carrega o list nao apresenta os dados do list, e sim o nome do metodo...

Como eu faria para carregar estes dados num array, e depois percorrer este array , e subir os dados na lista?

Grato Antcipadamente!
ELUCIMAR 15/11/2014 10:32:16
#442547
Resposta escolhida
Bom a maneira mais correta de preencher um ListBox com dados de uma Classe é do jeito que você esta fazendo, pois desta forma você pode retornar dados da sua classe posteriormente. Não está aparecendo os dados porque você esqueceu de informar a propriedade DisplayMember do ListBox. Um exemplo que fiz agora :

public class Cliente
{
public int CodCliente { get; set; }
public string NomeCliente { get; set; }
}

List<Cliente> lstCliente = new List<Cliente>();
lstCliente.Add(new Cliente() { CodCliente = 1, NomeCliente = [Ô]JOÃO[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 2, NomeCliente = [Ô]PEDRO[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 3, NomeCliente = [Ô]MANOEL[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 4, NomeCliente = [Ô]JOAQUIM[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 5, NomeCliente = [Ô]AFONSO[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 6, NomeCliente = [Ô]MARIA[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 7, NomeCliente = [Ô]JOANA[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 8, NomeCliente = [Ô]FRANCISCA[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 9, NomeCliente = [Ô]APARECIDA[Ô] });
lstCliente.Add(new Cliente() { CodCliente = 10, NomeCliente = [Ô]SANDRA[Ô] });

listBox1.DataSource = lstCliente;
listBox1.DisplayMember = [Ô]NomeCliente[Ô];

Em qualquer evento do ListBox você pode retornar dados da sua Classe:
Cliente cliente = listBox1.SelectedItem as Cliente;
if (cliente != null)
{
MessageBox.Show([Ô]Nome Cliente [Ô] + cliente.NomeCliente + [Ô] Código Cliente [Ô] + cliente.CodCliente);
}
PAULOOLIVEIRA 15/11/2014 10:54:17
#442549
Elucimar, infelizmente nao funfou... abaixo a funcao que retorna os dados...,

na classe:
public List<clsAutorizaGrupo> SelectListaAutorizaGrupo()
{
try
{
using (conexao)
{
MySqlCommand comando = new MySqlCommand([Ô]Select * from pedido_compra where autorizado=0 order by codigo[Ô], conexao);
if (conexao.State == ConnectionState.Closed) {
conexao.Open();
}

List<clsAutorizaGrupo> listaAprovacao = new List<clsAutorizaGrupo>();
using (MySqlDataReader dr = comando.ExecuteReader())
{
while (dr.Read())
{
autoriza.data = DateTime.Parse(dr[[Ô]data[Ô]].ToString());
autoriza.pedido = (string) funcoes.vernulo(dr[[Ô]codigo[Ô]]);
autoriza.valor = (Double)dr[[Ô]valor_total[Ô]];
autoriza.fornecedor = (String)funcoes.vernulo(dr[[Ô]fornecedor[Ô]]);
listaAprovacao.Add(autoriza);
}
dr.Dispose();
if (conexao.State == ConnectionState.Open)
{
conexao.Close();
}
return listaAprovacao ;
}
}
}
catch (MySqlException erro)
{
MessageBox.Show([Ô]Erro:[Ô] + erro);
return null;
}
finally
{
conexao.Close();
}
}
}

e aqui onde monta o listbox...

private void carregarCombo()
{
int i = 0;
ArrayList ItemList = new ArrayList();
ItemList.Add(autoriza.listarAutorizaGrupo());
for (i = 0; i <= ItemList.Count - 1; i++)
{
lista.Items.Add((ItemList[i]).ToString());
}
}

o que poderia esta errado, olha como carrega o listbox... ele possui dados , mais nao mostra...
ELUCIMAR 15/11/2014 11:07:01
#442550
Passa para o DataSource do seu ListBox o list SelectListaAutorizaGrupo e como disse anteriormente tem que informar na propriedade DisplayMember o Campo que aparecera na exibição do item do seu ListBox.

clsAutorizaGrupo autoriza = new clsAutorizaGrupo();
List<clsAutorizaGrupo> listaAprovacao = autoriza.SelectListaAutorizaGrupo();
seuListBox.DataSource = listaAprovacao;
seuListBox.DisplayMember = [Ô]fornecedor[Ô];
FILMAN 15/11/2014 14:42:32
#442553
Faça assim

private void carregarCombo()
{
var lst = autoriza.listarAutorizaGrupo();
foreach(var item in lst)
{
lista.Items.Add(item.data.ToString([Ô]dd/MM/yyyy[Ô]) + [Ô]    [Ô] +
item.pedido + [Ô]    [Ô] +
item.valor.ToString([Ô]#0.00[Ô]) + [Ô]    [Ô] +
item.fornecedor);
}
}



espero ter ajudado
Tópico encerrado , respostas não são mais permitidas