COMBOBOX MYSQL
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.
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.
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>.
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>.
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>.
Você vai instanciar a classe no form e executar um método da classe que faça a busca, mais ou menos assim:
Para usar, em algum lugar do form faça:
E pronto, sua lista vai conter os dados. Espero que entenda os lugares no código onde você completa com os seus valores...
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...
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...
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
é o que dá escrever tudo na unha sem usar o VS. Aqui o certo:
List<Dados> lista = new Dados().Busca();
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...
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.
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.
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[Ô].
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[Ô].
Tópico encerrado , respostas não são mais permitidas