Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

bracara

Problema ao adicionar dados a uma combobox

Mensagens Recomendadas

bracara    0
bracara

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
_Rest_    2
_Rest_

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.