Problemas com combobox e List<>
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
Posts
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?
06/07/2012
Joel Rodrigues
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.
09/07/2012
Joel Rodrigues
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; } }
25/07/2012
Joel Rodrigues
Boa sorte em seus projetos.
Estou encerrando este tópico.
Clique aqui para fazer login e interagir na Comunidade :)