Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gromano

[Resolvido] Popular ComboBox e setar valor e display

Recommended Posts

Prezados,

 

Estou tentando popular um combobox de forma que eu exiba um dado, mas quando selecionar um item, o valor selecionado seja outro.

 

Para exemplificar, seria como se no combobox o usuário visse o nome do cliente, mas quando selecionar algum método pudesse trabalhar com o código do usuário, ao invés do nome.

 

Sei que as propriedades DisplayMember e ValueMember fazem este papel, mas só consigo usá-las quando seto o DataSource.

 

Neste meu caso, os valores estão vindo de um List<string>, mas não consegui usar o DataSource e preencher as propriedades DisplayMember e ValueMember.

 

   	public void ColetarImgs(string reg_key)
   	{
       	DataRow[] dr = _docs.Select("RegKey = " + reg_key);
       	string fieldimg = dr[0].ItemArray[13].ToString();

       	List<string> imgs = RetornaImgs(fieldimg);

       	cbPaginas.DataSource = imgs;
   	}

Com este método acima, consigo preencher o combobox, mas com o valor total do campo.

Gostaria que o DisplayMember fosse parte do campo (exemplo: campo.Split('-')[3]) e o ValueMember fosse o valor total do campo.

 

Existe alguma forma de se fazer isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas não entendi como armazena em uma List<string> um código e um valor?

Se você armazenar somente um valor terá que fazer uma consulta no seu banco novamente.

 

A solução seria usar uma List<SuaClasse> ou um Dictionary.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, mas não entendi como armazena em uma List<string> um código e um valor?

Se você armazenar somente um valor terá que fazer uma consulta no seu banco novamente.

 

A solução seria usar uma List<SuaClasse> ou um Dictionary.

 

Abraços...

 

Na verdade, o que está na List<string> é o dado completo. E este é o nome de um arquivo.

 

Ex.: C:\documentos\pref-0123-00001.doc

 

Quero que no combobox seja exibido o pref-0123-000001.doc, mas quando eu for usar este dado para se chegar no arquivo, eu tenha o retorno do caminho completo.

 

Então em uma mesma linha da List<string> eu já conseguiria extrair o "código" e o dado a ser exibido.

 

Não sei se consegui explicar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de alimentar seu combo você terá que percorrer toda sua lista, utilizar o substring ou expressão regular pra conseguir extrair somente a parte desejada e alimentar outra lista, com o caminho completo e com somente o nome.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.

 

Consegui assimilar as alternativas que falaram e resolvi o problema usando um List<> de um objeto que criei para esta finalidade.

 

Muito obrigado pelas respostas e atenção dispensada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.