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.