Olá! Thursday, 10 de October de 2024.



Dicas CódigoFonte.net
Friday, 31 de October de 2008

Exibindo múltiplas colunas do DropDownList

Pessoal, como vão os estudos?

Hoje, desenvolvendo um projeto aqui na empresa, surgiu a necessidade de criar um DropDownList com duas colunas na propriedade DataTextField. Como sabemos, no ASP.Net, esta funcionalidade não é permitida, pois apenas podemos adicionar uma única coluna nesta propriedade.

Mas e se criássemos um DataTable onde existisse uma coluna que mesclava os campos que desejo exibir no meu DropDownList?

Então, em um objeto do tipo DataColumn, existe uma propriedade chamada "Expression" onde podemos usá-la para filtrar linhas, calculas valores de uma coluna ou criar colunas agregadas. Esta última opção é muito interessante em nosso caso, pois é justamente isto que queremos.

Vamos ao código!

Imaginemos que temos um DataTable chamado dtClientes que possui uma listagem de todos os clientes da empresa.

DataTable dtClientes = ClientesDAO.listaClientesEmpresa();

Este DataTable possui as colunas "CodigoCliente" e "NomeCliente".

Então, vamos criar uma outra coluna chamada "CampoAgregado" que irá mesclar o código do cliente e o nome.

DataColumn dcAgregado = new DataColumn("CampoAgregado", Type.GetType("System.String")); // criando uma coluna do tipo String dcAgregado.Expression = "CodigoCliente + ' - ' + NomeCliente"; // adicionando os campos que queremos juntar... e sim, estamos fazendo uma concatenação dentro da string

Depois, é só adicionar esta nova coluna no DataTable:

dtClientes.Columns.Add(dcAgregado);

Pronto. Agora é só definirmos em nosso DropDownList que o TextField é a nova coluna.

cmbClientes.DataTextField = "CampoAgregado";

Agora nosso DropDown exibirá as duas colunas mescladas. :-)

Veja o código completo:

DataTable dtClientes = ClientesDAO.listaClientesEmpresa(); DataColumn dcAgregado = new DataColumn("CampoAgregado", Type.GetType("System.String")); // criando uma coluna do tipo String dcAgregado.Expression = "CodigoCliente + ' - ' + NomeCliente"; // adicionando os campos que queremos juntar... e sim, estamos fazendo uma concatenação dentro da string. dtClientes.Columns.Add(dcAgregado); cmbClientes.DataTextField = "CampoAgregado"; cmbClientes.DataValueField = "CodigoCliente"; cmbClientes.DataSource = dtClientes; cmbClientes.DataBind();


Até mais pessoal


Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010