🔥 Apps, books, system as a service, podcast and more



Inserindo valor na combo depois de preenchida



Caro(a) Leitor(a), gostaria de mostrar hoje como inserir um valor na combo / dropdownlist depois dela já preenchida. Recebi alguns e-mails de programadores iniciantes perguntando como fazer isso. Este artigo foi feito para ajudar.

Os dados são carregados do banco de dados com o tipo de dado chamado DataTable. Os valores são preenchidos usando o DataBind, mas depois disso, preciso colocar mais um valor na posição 0 ou na posição que eu quiser, como fazer isso?

Tag: Visual Studio 11, C#, combo, dropdownlist

É simples de ser feito, mas precisa prestar atenção depois de preencher os dados. O primeiro passo é conectar ao banco, fazer o select necessário e retornar um DataTable. Se você retornar um DataSet, basta colocar o ponto Tables[0], como no exemplo listagem 1.

[CODE]
return Conexao.ExecuteDataSet(sql.ToString()).Tables[0];
[/CODE]
Listagem1: Retornando DataTable.

Note que a execução do DataSet retorna esse tipo,  se você colocar o ponto Tables[0] ele retorna o tipo DataTable. Esse é um framework que desenvolvi e uso para usar em meus aplicativos internos.

Fiz um framework de acesso a dados para conexão em vários bancos diferentes usando segurança e criptografia de dados, inclusive na string de conexão. Em artigos posteriores posso falar mais como criar um.

Depois que retornou o dado do tipo DataTable, atribui minha combo chamada de cmbTodosBancos. Listagem 2.

[CODE]
HTML
<asp:DropDownList ID="cmbTodosBancos" runat="server">
</asp:DropDownList>

C#
cmbTodosBancos.DataSource = BuscarBanco(_parametros);
[/CODE]
Listagem 2: Parte HTML  e C# da combo

Depois de retornar os valores, preciso informar qual é o campo de valor e qual é o campo que vai aparecer para o usuário. Eu gosto de fazer no código C#.  Listagem 3.

[CODE]
C#
cmbTodosBancos.DataSource = BuscarBanco(_parametros);
 
cmbTodosBancos.DataValueField = "CodigoId";
cmbTodosBancos.DataTextField = "Descricao";
            
cmbTodosBancos.DataBind();
[/CODE]
Listagem 3: Preenchimento os campos

Note os atributos, DataValueField serve para atribuir o valor da combo. Ao selecionar alguma descrição, automaticamente o código pega o valor. O que vai aparecer para o cliente é o atributo DataTextField, geralmente a descrição do banco de dados. 

Depois disso é necessário chamar o DataBind() para preencher os dados. Esse CodigoId e Descricao estão entre aspas são campos que vieram do meu banco de dados. 

Para preencher um valor, ou adicionar um novo na combo é necessário colocar um código depois do DataBind(). Listagem 4.

[CODE]
cmbTodosBancos.Items.Insert(0, new ListItem("<< Selecione >>","0"));
[/CODE]
Listagem 4: Inserindo novo valor na combo

Note que foi usado o atributo chamado Items.Insert passando como parâmetro primeiro o 0 e depois uma lista. Esse 0 indica que é a posição onde vai aparecer para o usuário do sistema. O 0 é a primeira posição. 

Depois utilizei o ListItem instanciando uma vez com o new ListItem. No list eu posso colocar apenas uma descrição ou uma descrição e um valor. Se você for verificar o valor escolhido para o usuário, é melhor colocar o valor zero. Com isso, você pode verificar se a posição 0 está selecionada para passar para o próximo passo.

Para pegar o valor da combo depois que o usuário escolher e clicar no botão basta usar. Listagem 5.

[CODE]
String a = cmbTodosBancos.SelectedValue;
[/CODE]

Bom, é isso que precisa fazer para preencher uma combo / dropdownlist pelo código vindo do banco de dados. Depois basta acrescentar uma lista com a posição zero falando para o usuário selecionar um valor.

Espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site pessoal www.mauriciojunior.org

Sign up to our newsletter

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.

Top