Neste artigo, eu vou mostrar como podemos exibir mais de um valor em um controle dropdownlist e obter o valor selecionado usando jQuery com a distribuição CDN.
O controle DropDownList é um controle de lista muito versátil e simples para exibir uma lista de opções ao usuário. Para recordar, abaixo relacionei novamente as propriedades de um controle DropDownList:
- AutoPostBack – Se for True causa um envio (post) do formulário quando o cliente altera o item selecionado;
- DataSource – Referencia a fonte de dados que o controle usa para preencher os itens;
- DataTextField – É usado para preencher o campo Text dos itens;
- DataValueField – Usado para preencher o campo Value dos itens;
- Items – Coleção de objetos ListItem onde cada objeto representa um item;
- SelectedItem – Uma referência o item selecionado;
- SelectedIndex – Informa o índice do item selecionado. O primeiro tem índice igual a zero.
Evento de um DropDownList: OnSelectedIndexChanged – Iniciado quando o controle tem a propriedade AutoPostBack igual a True e ocorre mudança no item selecionado.
A jQuery é a biblioteca JavaScript mais usada em aplicações web atualmente. Ela foi desenvolvida em 2006, por John Resig, e é suportada por uma comunidade de desenvolvedores além do time do projeto jQuery. Ela foi construída para ser leve, poder ser usadas nos principais navegadores e ser compatível com a especificação CSS3.
A jQuery simplifica a maneira de como acessar os elementos DOM, tornando mais fácil a navegação pelas páginas. Para usar jQuery, você pode:
- Fazer o download da library jQuery a partir do site jQuery.com e referenciar no seu projeto;
- Incluir a jQuery a partir de uma distribuição CDN (Content Delivery Network), como o Google ou Microsoft;
No exemplo do artigo, eu vou usar a distribuição CDN do Google que tem a seguinte sintaxe:
<script src=”https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js”></script>
Recursos usados: Visual Studio Community 2015
Nota: Baixe e use a versão Community 2015 do VS. Ela é grátis e é equivalente a versão Professional.
Criando o projeto no VS Community
Abra o VS Community 2015 e clique em New Project. Depois selecione a linguagem Visual Basic ou Visual C# e o template ASP .NET Web Application.
Informe o nome DropDownList_MultiplasColunas, ou outro de sua preferência, e clique no botão OK.
A seguir, selecione o template Empty e marque a opção Web Forms, pois vamos criar um projeto vazio:
Em seguida, no menu Project, clique em Add New Item e selecione o template Web Form, informando o nome Default.aspx. Assim, incluímos uma página em nosso projeto.
Para obter a Jquery, podemos usar o Nuget para incluir as referências às biblioteca jQuery.
Isso é feito no menu TOOLS e em Nuget Package Manager e selecione Manage Nuget Package for Solutions.
Na janela do assistente, selecione a guia Online e informe jQuery para localizar o pacote. Selecione o pacote jQuery e clique no botão Install para instalar a biblioteca no projeto:
No nosso exemplo, não vamos seguir esse caminho, usando a distribuição CDN que é referenciada diretamente na página ASP .NET.
Abra a página Default.aspx no modo Source e inclua a referências na seção <head> para a biblioteca JQuery, usando a CDN do Google.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DropDownList_MultiplasColunas.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>DropDwonList - Multiplas Colunas/ Seleção com jQuery(CDN)</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script type="text/javascript"> function getValorSelecionado() { alert($("#ddl").val()); } function getTextoSelecionado() { alert($("#ddl option:selected").text()); } </script> </head> <body> <h2>Macoratti .net - DropDownList com Múltiplas Colunas/Seleção com jQuery(CDN)</h2> <hr /> <form id="form1" runat="server"> <div> Selecione uma opção : <asp:DropDownList ID="ddl" runat="server" Height="27px" Width="245px" /> </div> <p><asp:Button ID="btnValor" runat="server" Text="Obter o valor Selecionado" OnClientClick="return getValorSelecionado();" /></p> <p> <asp:Button ID="btnTexto" runat="server" Text="Obter o Texto Selecionado" OnClientClick="return getTextoSelecionado();" /> </p> </form> </body> </html>
Na tag <head>, definimos as funções jQuery getValorSelecionado e getTextoSelecionado para obter o valor selecionado a partir do controle DropDownList(ddl).
Agora, vamos definir o código no arquivo code-behind Default.aspx.cs, usando o evento Load, para acessar a tabela Customers do banco de dadosNorthwind.mdf e obter o valores para exibir no dropdownlist.
using System; using System.Data.SqlClient; SqlConnection con = null; protected void Page_Load(object sender, EventArgs e) { try { string connectionString = @"Data Source=.\sqlexpress;Initial Catalog=Northwind;Integrated Security=True"; con = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand("Select CustomerID, PostalCode + ' - ' + City as pCep from Customers", con); con.Open(); SqlDataReader rd; rd = cmd.ExecuteReader(); ddl.DataSource = rd; ddl.DataMember = "CusrtomerID"; ddl.DataValueField = "pCep"; ddl.DataBind(); } catch(Exception ex) { throw ex; } finally { con.Close(); } }
O pulo do gato para exibir mais de um valor no controle dropdownlist é montar a instrução SQL concatenando os campos com os valores que desejamos exibir.
No exemplo, fizermos isso para as colunas PostalCode e City definindo o aliás pCep para este valor.
Select CustomerID, PostalCode + ‘ – ‘ + City as pCep from Customers
Depois, atribuímos o valor à propriedade DataValueField: ddl.DataValueField = “pCep”;
Executando o projeto, iremos obter:
- Pegue o projeto completo aqui: DropDownList_MultiplasColunas.zip