Combobox redeem ID value

Asked

Viewed 104 times

0

public void SalvarProfessor(Professor professores)
        {
            try
            {
                AbrirConexao();

                comando = new MySqlCommand("INSERT INTO professores (nome, idade, genero, email, id_especialidade) VALUES (@nome, @idade, @genero, @email, @id_especialidade)",conexao);
                comando.Parameters.AddWithValue("@nome", professores.Nome);
                comando.Parameters.AddWithValue("@idade", professores.Idade);
                comando.Parameters.AddWithValue("@genero", professores.Genero);
                comando.Parameters.AddWithValue("@email", professores.Email);
                comando.Parameters.AddWithValue("@id_especialidade", professores.Especialidade);



                comando.ExecuteNonQuery();

            }
            catch (Exception erro)
            {
                throw erro;
            }
            finally
            {
                FecharConexao();
            }
        }
private void SalvarProfessor(Professor professores)
        {
            RegistrosBLL professorBll = new RegistrosBLL();

            professores.Nome = tb_NomeProfessor.Text;
            professores.Idade = Convert.ToInt32(tb_IdadeProfessor.Text);
            professores.Genero = cb_GeneroProfessor.Text;
            professores.Email = tb_EmailProfessor.Text;
            professores.Especialidade = cbEspecialidade.Text;



            professorBll.SalvarProfessor(professores);

            LimparCampoProfessor();
            MessageBox.Show("Professor Cadastrado com sucesso!");
        }

This method is used to save teacher, but I need the combobox to rescue the ID by the name Listed on it, EX "Sport Psychology":

Currently being shown soinserir a descrição da imagem aqui

I need the user to register the teacher by the Name listed on comboBox and not typing the ID of the specialty

2 answers

0


You need to fill out the Combobox with the details of the specialties:

Supposing your class is something like this:

public class Especialidade
{
    public int Id {get;set;}
    public string Nome {get;set;}
}

You should get a list of specialties from the database and assign it to the combobox:

List<Especialidade> lista = //...Select do banco....

cbEspecialidade.ValueMember = "Id";
cbEspecialidade.DisplayMember = "Nome";
cbEspecialidade.DataSource = lista;

When assigning the value, you can pick the item, which will be a specialty or the selected value:

professores.Especialidade = cbEspecialidade.SelectedValue?.ToString();

or

Especialidade objEsp =  cbEspecialidade.SelectedItem as Especialidade;
professores.Especialidade = objEsp.Id;

You can also use a Datagridviewcomboboxcolumn to display a combo in datagridview. For popular it is exactly the same.

-1

Create a View similar to this:

create view Show teacher as select ID_PROF as CÓDIGO, NOM_PROF as NOME, IDADE, GENERO, EMAIL, tabespe.NOM_ESP as ESPECIALIDADE from tabelaprofessor tabprof Join Tabelaspecialitytabespe on tabprof.ID_ESP = tabespe.ID_ESP

Create a Procedure similar to this:

DELIMITER $$ CREATE PROCEDURE Mostrar_professor() BEGIN select * from show_teacher; END $$ DELIMITE ;

Change your dataGridViewProducts.Datasource to receive the Mostrar teacher procedure, I’m almost sure it will solve your problem.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.