LISTA EM C#
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!
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!
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);
}
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);
}
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...
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...
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[Ô];
clsAutorizaGrupo autoriza = new clsAutorizaGrupo();
List<clsAutorizaGrupo> listaAprovacao = autoriza.SelectListaAutorizaGrupo();
seuListBox.DataSource = listaAprovacao;
seuListBox.DisplayMember = [Ô]fornecedor[Ô];
Faça assim
espero ter ajudado
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