Jump to content
Sign in to follow this  
tig17

C# Registos numa combobox

Recommended Posts

tig17

Estou aqui com uma duvida pessoal.

Consegui meter os registos de uma campo de uma tabela dentro da combobox com o código abaixo.

Agora gostava era de na mesma combobox meter algo do genero:

registo1 - registo 2 (ou seja se tiver uma tabela com o ID e o nome queria meter ID - Nome a aparecer na combobox e não apenas o ID que é como tenho.

           string sql;

            try
            {
                OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=LOCALIZACAO;");
            
                //Passando a instrução no sql
                sql = "SELECT Papel, Descricao FROM TipoPapel";
                OleDbCommand cmd = new OleDbCommand(sql, conn);
              
                //Abre conexão
                conn.Open();
              
                //Leio os valores a serem preenchidos na combobox
                OleDbDataReader reader = cmd.ExecuteReader();
                DataTable table = new DataTable();
                table.Load(reader);
                DataRow row = table.NewRow();
                row["Papel"] = "";
                table.Rows.InsertAt(row, 0);
                this.comboBox3.DataSource = table;
                this.comboBox3.ValueMember = "Papel";
                this.comboBox3.DisplayMember = "Papel";

                //fecho a leitura
                reader.Close();
                reader.Dispose();

                //fecho a conexão 
                conn.Close();
                conn.Dispose();

            }
            catch
            {
                MessageBox.Show("Erro ao ler registos! Pode não ter acesso à localização da Base de Dados!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

Share this post


Link to post
Share on other sites
filiperainho

Tens de concatenar o ID com o Nome e depois envias para a Combo o valor da concatenação.


Programador - C# ; C ; PHP ; JavaScript ; CSS ; HTML ; iniciante em Android.

Share this post


Link to post
Share on other sites
tig17

Tens de concatenar o ID com o Nome e depois envias para a Combo o valor da concatenação.

Como é que eu posso concatenar isso? :/ --> é com o concat já descobri.

Uma outra duvida:

Para agarrar mais um valor, que bocados do codigo tenho de repetir mas modificando o nome do campo. É que vi este codigo na net e houve partes deles que não entendi muito bem.

Share this post


Link to post
Share on other sites
filiperainho

Por exemplo ValorDoID + "-" + ValorDoNome, é isto que vais adicionar à combobox.


Programador - C# ; C ; PHP ; JavaScript ; CSS ; HTML ; iniciante em Android.

Share this post


Link to post
Share on other sites
tig17

Por exemplo ValorDoID + "-" + ValorDoNome, é isto que vais adicionar à combobox.

Com duas strings também deve dar. E depois concatena-las certo?

Apesar dessa maneira também ser simples. Basta adicionar isso à collection.

Uma outra duvida:

Para agarrar mais um valor, que bocados do codigo tenho de repetir mas modificando o noem do campo. É que vi este codigo na net e houve partes deles que não entendi muito bem.

Share this post


Link to post
Share on other sites
filiperainho

Aquilo são duas Strings. Uma concatenação é uma junção de texto.

Sim, depois é só adicionar à Combobox.


Programador - C# ; C ; PHP ; JavaScript ; CSS ; HTML ; iniciante em Android.

Share this post


Link to post
Share on other sites
tig17

No meu codigo ele está a colocar os valores numa tabela e depois vai busca-los para meter na combo.

Não é possivel eu criar uma coluna nessa tabela que criei onde coloco esses valores e depois no data value da combo coloco os valores da linha de ambas as colunas? :)

Ou tenho de criar uma nova tabela colocar lá os nomes e só depois adicionar ambos os valores à collection da combo?

PS: Depois acabei por não fazer o que pretendia e apenas usar o ValueMember.

Share this post


Link to post
Share on other sites
filiperainho

Podes criar só uma nova coluna.


Programador - C# ; C ; PHP ; JavaScript ; CSS ; HTML ; iniciante em Android.

Share this post


Link to post
Share on other sites
Tiago Salgado

DataRow row = table.NewRow();
                row["Papel"] = "";
                table.Rows.InsertAt(row, 0);

Remove estas linhas.

Share this post


Link to post
Share on other sites
tig17

DataRow row = table.NewRow();
                row["Papel"] = "";
                table.Rows.InsertAt(row, 0);

Remove estas linhas.

Isso resolveu-me o problema de não aparecer o registo em branco que tentava tirar :D

Obrigado!!

Quanto ao problema deste tópico decidi fazer de outra maneira e aproveitar o valuemember :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.