Fórum Problemas com combobox e List<> #419257
03/07/2012
0
Estou com o seguinte problema:
Tenho uma classe Cursos com um List:
public List<Cursos> Localizar()
{
List<Cursos> lstCurso = new List<Cursos>();
using(SqlConnection objConexao=new SqlConnection(objDados.strConn))
{
using(SqlCommand objCommand =new SqlCommand(Dados.strSelectCurso,objConexao))
{
objConexao.Open();
SqlDataReader objDataReader = objCommand.ExecuteReader();
if (objDataReader.HasRows)
{
while (objDataReader.Read())
{
Cursos objCurso = new Cursos();
objCurso.IdCurso = Convert.ToInt32(objDataReader[IdCurso].ToString());
objCurso.Curso=objDataReader[Curso].ToString();
lstCurso.Add(objCurso);
}
objDataReader.Close();
}
objConexao.Close();
}
}
return lstCurso;
}
no meu formulário carrego um combobox com os items desse List
estou fazendo assim:
private void CarregaCurso()
{
DadosCursos objCurso = new DadosCursos();
List<DadosCursos.Cursos> listaCurso = new List<DadosCursos.Cursos>();
listaCurso = objCurso.Localizar();
foreach (var itemLista in listaCurso)
{
cboCurso.ValueMember = itemLista.IdCurso.ToString();
cboCurso.DisplayMember = itemLista.Curso;
cboCurso.Items.Add(itemLista.Curso);
}
}
Até ai tudo bem carrega os items
Ao Selecionar um item quero que o IdCurso seja correspondente ao Curso selecionado
pois da forma que está só está gravando o terceiro item do combobox.
Ah! Adicionei um item ao Index 0: Selecione um curso que é exibido quando carrego o form
Já tentei fazer o seguinte:
private void cboCurso_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboCurso.SelectedIndex > 0)
IdCurso = Convert.ToInt32(cboCurso.ValueMember);
Curso = cboCurso.SelectedText;
lbl4.Text = cboCurso.ValueMember;
}
sem sucesso
Alguém pode me ajudar?
Leandro Moura
Curtir tópico
+ 0Posts
05/07/2012
Leandro Moura
O código ficou assim:
private void CarregaCurso()
{
DadosCursos objCurso = new DadosCursos();
List<GETS.Classes.DadosCursos.Cursos> listaCurso = new List<DadosCursos.Cursos>();
listaCurso = objCurso.Localizar();
foreach (var itemLista in listaCurso)
{
cboCurso.Items.Insert(0, Selecione);
cboCurso.SelectedIndex = 0;
cboCurso.DataSource = listaCurso;
cboCurso.ValueMember = IdCurso;
cboCurso.DisplayMember = Curso;
}
}
eu não tinha colocado o datasource e os valores do ValueMember e DisplayMember estavam errados
porém me deparei com outro problema...
Não aparece o Index 0 Selecione um curso
Como fazer para adicionar aos items?
Gostei + 0
06/07/2012
Joel Rodrigues
Gostei + 0
06/07/2012
Leandro Moura
private void CarregarCurso()
{
DadosCursos objCurso = new DadosCursos();
List<GETS.Classes.DadosCursos.Cursos> listaCurso = new List<DadosCursos.Cursos>();
listaCurso = objCurso.Localizar();
foreach (var itemLista in listaCurso)
{
cboCurso.DataSource = listaCurso;
cboCurso.Items.Insert(0,Selecione);
cboCurso.ValueMember = IdCurso;
cboCurso.DisplayMember = Curso;
}
}
e assim depois dos valores
Dá o seguinte erro:
Items collection cannot be modified when the DataSource property is set.
Gostei + 0
09/07/2012
Joel Rodrigues
Gostei + 0
25/07/2012
Leandro Moura
Inseri na lista e só depois passei a lista para o combo
Ficou assim:
private void CarregarCurso()
{
DadosCursos objCurso = new DadosCursos();
List<GETS.Classes.DadosCursos.Cursos> listaCurso = new List<DadosCursos.Cursos>();
listaCurso = objCurso.Localizar();
DadosCursos.Cursos objSelecao = new DadosCursos.Cursos();
objSelecao.IdCurso = 0;
objSelecao.Curso = Selecione um curso;
listaCurso.Insert(0, objSelecao);
foreach (var itemLista in listaCurso)
{
cboCurso.DataSource = listaCurso;
cboCurso.ValueMember = IdCurso;
cboCurso.DisplayMember = Curso;
cboCurso.SelectedIndex = 0;
}
}Gostei + 0
25/07/2012
Joel Rodrigues
Boa sorte em seus projetos.
Estou encerrando este tópico.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)