Jump to content

Problema ao adicionar dados a uma combobox


bracara

Recommended Posts

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();
Edited by bracara
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

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

Link to comment
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
×
×
  • 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.