Ir para conteúdo

POWERED BY:

Arquivado

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

rodrigo_medeiros

Combo Box

Recommended Posts

Fala galera, acho que o que eu vou perguntar é um pouco absurdo, mas vou tentar...Tenho um combobox em uma pagina asp em que os valores do campo são recuperados de uma tabela. Até aí normal.O problema é que essa tabela tem muitos registros e o combo acaba ficando gigante. Aí é que tá.Existe algum combo em html como o combo do Access, em que a gente pode ir escrevendo o valor dentro do combo e os dados do combo vão sendo filtrados de acordo com que se está escrevendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara até dá, mas voce deverá mesclar um textfield, onde você digitará a parada, a cada click você manda o valor pra um iframe que faz a consulta e devolve o resultado na page atualizando o combo...bem nunca fiz mas... é a logica da coisa...

Compartilhar este post


Link para o post
Compartilhar em outros sites

marioufpa,

Desculpa, mas essa seria a forma mais difícil de fazer isso.

 

Rodrigo,

 

Eu tenho uma função que faz isso, e se chama "AutoComplete"......

É uma função que desenvolvi em ASP e JScript....

 

O que ocorre é o seguinte, você ira carregar todos os dados em campo do tipo "Select", entretanto, este campo ficará com a propriedade "style.display=none", ou seja, oculto.

 

No mesmo lugar você coloca um campo do tipo "text" onde o usuário irá digitar as informações de busca.

 

Como o evento "OnKeyPress", você inicia a busca no "Select".

 

Bom é mais fácil eu mandar a função....

Se alguém não entender, me avisa.

 

Abaixo o JScript

ASP

[*]

 

[*]function autoComplete (field, select, property, forcematch) {

 

[*] var found false;

 

[*] for (var i = 0; i < select.options.length; i++) {

 

[*] if (select.options[property].toUpperCase().indexOf(field.value.toUpperCase()) == 0) {

 

[*] found=true; break;

 

[*] }

 

[*] }

 

[*] if (found) { select.selectedIndex = i; }

 

[*] else { select.selectedIndex = -1; }

 

[*] if (field.createTextRange) {

 

[*] if (forcematch && !found) {

 

[*] field.value=field.value.substring(0,field.value.length-1); 

 

[*] return;

 

[*] }

 

[*] var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";

 

[*] if (cursorKeys.indexOf(event.keyCode+";"== -1) {

 

[*] var r1 field.createTextRange();

 

[*] var oldValue r1.text;

 

[*] var newValue = found ? select.options[property] : oldValue;

 

[*] if (newValue !field.value) {

 

[*] field.value = newValue;

 

[*] var rNew field.createTextRange();

 

[*] rNew.moveStart('character', oldValue.length) ;

 

[*] rNew.select();

 

[*] }

 

[*] }

 

[*] }

 

[*] }

 

[*]

E no html, a gente faz assim.

 

ASP

[*]

 

[*]

 

[*]<Input type="text" class="text" name="cd_equipe_text" OnKeyUp="AutoComplete cd_equipe_text,cd_equipe,'text',true" OnBlur="OcultaCampoText cd_equipe_text,cd_equipe">

 

[*] <Select Name="cd_equipe" class="botao" Style="width=100%" >

 

[*] <Option value="">(Selecione)</option>

 

[*] <%While Not OrsEquipe.eof%>

 

[*] <Option value="<%=OrsEquipe("cd_pessoa")%>"><%=OrsEquipe("ds_nome_pessoa")%></option>

 

[*] <%ORsEquipe.Movenext%>

 

[*] <%Wend%>

 

[*]

[/ASP]

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tb tio se forem muitos dados vai demorar pra imprimir tudo no select...mas funfa muito bem...

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.