• Revista PROGRAMAR: Já está disponível a edição #56 da revista programar. Faz já o download aqui!

bracara

Problema ao adicionar dados a uma combobox

3 mensagens neste tópico

Boas.

 

Sou bastante noob nestas andanças e estava a fazer uns teste em C# e Visual Studio e deparei-me com um problema ao carregar os dados do mySql para uma combobox. Se Carregar normalmente, como já vi em vários locais tudo corre bem, mas precisava de ter uma primeira opção com o item - Novo -.

Aqui começaram os problemas. Se crio primeiro esse item e depois mando carregar com os dados da datatable o item desaparece. Tentei iterar sobre as linhas da data table mas apenas aparecia a informação sobre o campo onde estavam armazenados os dados e não os dados em si.

Tive que iterar novamente sobre cada elemento em cada linha e escrever apenas o que precisava (estava na posição 1 do array).

Está a funcionar correctamente mas parece-me que deve haver uma maneira mais compacta de resolver o problema. Deixo aqui o código para alguém com mais experiência me possa indicar uma solução mais refinada e correcta.

Desde já muito obrigado.

ConexaoMySQL.Ligar();
string inserir = "SELECT * FROM cidade ";
ConexaoMySQL.comandos(inserir);
MySqlDataReader dr = ConexaoMySQL.comando.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
cmbAtletaCidade.Items.Insert(0, "- Novo -");
foreach (DataRow dado in dt.Rows)
{
	item = dado.ItemArray;
	cmbAtletaCidade.Items.Add(item[1]);
}
ConexaoMySQL.Desligar();

 

Editado por bracara
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens 2 formas de fazer isso. A mais facil é na tua querry adicionares esse novo item

Exemplo:

SELECT 'Novo'
UNION
SELECT Nome FROM Cidades

e assim já tens no DataSet ou DataTable a lista com esse valor.

Em alternativa adicionas à tabela uma row e depois passas a tabela para a combo.

Exemplo

                DataRow dr = ds.Tables[0].NewRow();
                dr[0] = 0;
                dr[1] = "Novo";
                ds.Tables[0].Rows.InsertAt(dr, 0);

                cmbCidades.DataSource = ds.Tables[0];
                cmbCidades.ValueMember = "ID";
                cmbCidades.DisplayMember = "Descricao";

 

Tens que adaptar ao teu caso, aí nesse é só no caso se tiveres a combo a guardar 2 valores, o ID e o nome da cidade

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora