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 stringDepois, é 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

![]() |
CodigoFonte.net » CodigoFonte.eti.br » Procurando o que comprar? » MeuMural.com.br » Todos os Direitos Reservados © 2002/2008 |
Procurando Notebooks, Câmeras Digitais, iPhones?