COMBOBOX MYSQL

NETVOO 18/11/2015 13:16:34
#454102
Pessoal alguem poderia postar um modelo de como posso usar em uma classe, uma chamada para carregar um combo.
Exemplo:
carrego o combo com o metodo abaixo dentro da classe..
DataSet dsCAD = new DataSet();
CommCarregaNomeEquipamentoCAD.Fill(dsCAD);
comboBox8.DataSource = dsCAD.Tables[0];
comboBox8.DisplayMember = [Ô]SGTM_ISS_ATV_I_DES_RES[Ô];
comboBox8.ValueMember = [Ô]SGTM_ISS_ATV_I_COD[Ô];

mais da erro comboBox8 = não encontrado no contesto atual.
KERPLUNK 18/11/2015 13:39:20
#454104
Não use o objeto DataTable se quer simplesmente ler dados. Para isso que existe o objeto DataReader, que é muito mais rápido para essa função. Com isso em mente, crie uma classe que retorne um List<T> de uma classe que contenha simplesmente as propriedades código e descrição. Você pode passar esse resultado como DataSource do seu ComboBox.
NETVOO 18/11/2015 14:17:00
#454105
Ok vou pesquisar sobre o List<T> pois não sei como usalo ainda.
E realmente não tem uma maneira de informar para minha classe que esse combo ele está no form2 ? Seria só fazendo um List<T>.
Citação:

:
Não use o objeto DataTable se quer simplesmente ler dados. Para isso que existe o objeto DataReader, que é muito mais rápido para essa função. Com isso em mente, crie uma classe que retorne um List<T> de uma classe que contenha simplesmente as propriedades código e descrição. Você pode passar esse resultado como DataSource do seu ComboBox.




Ok vou pesquisar sobre o List<T> pois não sei como usalo ainda.
E realmente não tem uma maneira de informar para minha classe que esse combo ele está no form2 ? Seria só fazendo um List<T>.
KERPLUNK 18/11/2015 14:52:41
#454106
Você vai instanciar a classe no form e executar um método da classe que faça a busca, mais ou menos assim:

public class Dados
{
public int Codigo { get; set; }
public string Descricao { get; set; }
public List<Dados> Busca()
{
List<Dados> _return = null;
using (MySqlConnection cn = new MySqlConnection([Ô]sua string de conexão aqui[Ô]))
{
try
{
cn.Open();
}
catch (Exception)
{
throw;
}
using (MySqlCommand cmd = new MySqlCommand([Ô]sua query aqui[Ô]))
{
using (MySqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
_return = new List<Dados>();
while (dr.Read())
{
_return.Add(new Dados()
{
Codigo = dr.GetInt32(dr.GetOrdinal([Ô]nome do campo codigo[Ô])),
Descricao = dr.GetString(dr.GetOrdinal([Ô]nome do campo descricao[Ô]))
});

}
}
}
}
}

return _return;
}
}



Para usar, em algum lugar do form faça:

List<Dados> lista = new Dados.Busca();
comboBoxXXX.DisplayMember = [Ô]Descricao[Ô];
comboBoxXXX.DisplayValue = [Ô]Codigo[Ô];
comboBoxXXX.DataSource = lista;


E pronto, sua lista vai conter os dados. Espero que entenda os lugares no código onde você completa com os seus valores...
KERPLUNK 18/11/2015 14:57:22
#454107
Se quiser, não é nem mesmo necessário especificar quais propriedades são para exibição e valor, usando as decorações corretas nelas:

[ValueMember]
public int Codigo { get; set; }
[DisplayMember]
public string Descricao { get; set; }
//o resto é igual...
NETVOO 18/11/2015 15:43:23
#454108
Citação:

:
Você vai instanciar a classe no form e executar um método da classe que faça a busca, mais ou menos assim:


public class Dados
{
public int Codigo { get; set; }
public string Descricao { get; set; }
public List<Dados> Busca()
{
List<Dados> _return = null;
using (MySqlConnection cn = new MySqlConnection([Ô]sua string de conexão aqui[Ô]))
{
try
{
cn.Open();
}
catch (Exception)
{
throw;
}
using (MySqlCommand cmd = new MySqlCommand([Ô]sua query aqui[Ô]))
{
using (MySqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
_return = new List<Dados>();
while (dr.Read())
{
_return.Add(new Dados()
{
Codigo = dr.GetInt32(dr.GetOrdinal([Ô]nome do campo codigo[Ô])),
Descricao = dr.GetString(dr.GetOrdinal([Ô]nome do campo descricao[Ô]))
});

}
}
}
}
}

return _return;
}
}



Para usar, em algum lugar do form faça:

List<Dados> lista = new Dados.Busca();
comboBoxXXX.DisplayMember = [Ô]Descricao[Ô];
comboBoxXXX.DisplayValue = [Ô]Codigo[Ô];
comboBoxXXX.DataSource = lista;


E pronto, sua lista vai conter os dados. Espero que entenda os lugares no código onde você completa com os seus valores...



No exemplo acima ele da erro :
Erro 4 [ô]ExemploWebService.DadosCombo6.Busca()[ô] é um [ô]método[ô], mas é usado como [ô]tipo[ô] C:\Users\Projects\U8TMEVQXEV3funcoes\katy\Form2.cs 377 55
KERPLUNK 18/11/2015 16:05:22
#454109
é o que dá escrever tudo na unha sem usar o VS. Aqui o certo:

List<Dados> lista = new Dados().Busca();
KERPLUNK 18/11/2015 16:07:27
#454110
E pela mensagem de erro, gostaria de ver como ficou seu código final. Acho que você está fazendo coisa que não deveria. Além disso, esse tipo de mensagem deve ser natural para você entender o problema...
NETVOO 18/11/2015 18:12:33
#454120
Ok devido ao monte de erros, estou fazendo todas as funções separadas em projetos isolados, para a minha falta de conhecimento na linguagem e na IDE .net, faça com que o que esteja funcionando pare.
Segue o exemplo com os dados que parou de dar erro quando tido o modelo em que você passou de dentro da classe e coloco no forme, porem ambos não carregam o form.
KERPLUNK 18/11/2015 20:23:28
#454124
O seu erro é o entendimento estrutural. [Ô]public partial class Form1[Ô] é parte de uma classe. Portanto você não pode ter uma classe dentro disso. Se quiser colocar a classe que te passei dentro do código do form, tudo bem, desde que faça isso fora da estrutura da classe do form. O ideal é colocar em um arquivo separado, não precisa ser em um projeto separado, seria bom, mas não é obrigatório.

Outra coisa importante é parar de ver apenas [Ô]erro[Ô]. Eles têm uma mensagem que diz muito sobre sua resolução. Portanto preste mais a atenção na mensagem do erro e não apenas [Ô]erro[Ô].
Página 2 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas