Ir para conteúdo

POWERED BY:

Arquivado

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

Dynho

Valores entre 2 selects do mesmo form

Recommended Posts

Galera, imaginem a seguinte situação.Tenho um form de cadastro que tem 2 selects multiple. O da esquerda nomeado como listLeft e o da direita como listRight.O listLeft é carregado dinamicamente via script asp. O listRight encontra-se em branco. Através de um javascript, eu manipulo os valores entre os 2 selects. Ou seja, seleciono opções no listLeft e mando pro listRight e vice-versa.Até aí tudo bem. Quando clico em enviar, os dados são cadastrados com sucesso. O campo que é inserido o valor do listRight fica algo como: 1,58,2,95,158,2Até aí tudo bem. O problema, vem na alteração do banco de dados. Eu carrego o mesmo form para fazer a alteração. O listLeft, é carregado novamente dinamicamente mas dessa vez, uso um if para validar se o id atual do cursor do mouse, está no campo anteriormente cadastrado. Verifico isso através de uma instrução InString.No listRight, eu dessa vez carrego dinamicamente pois tenho que carregar os valores que estão no banco de dados. E para isso, uso a função Split, jogo o valor do campo num array, e num loop for, eu imprimo tudo na tela.Até aí, mil maravilhas. O problema então, ocorre quando faço alguma alteração. Quando clico em enviar para atualizar o registro, ele simplesmente, não recupara mais os valores enviados na listRight.Eu estive pensando, e imagino que o motivo seja pq quando estou alterando o registro, eu tenho que carregar o listRight dinamicamente tb, e aí ele dá conflito como javascript embora o browser não apresente erro algum.Enfim, escrevi demais e não sei se consegui explicar meu problema. Eu só quero ter um form de cadastro com 2 selects que possam trocar valores entre si. E um form de alteração desse registro que tb possam trocar valores entre si mas que funcione.Alguém aí ja fez algo parecido? Preciso desse help urgente ainda hoje e toda ajuda é bem vinda. Obrigado a todosDynho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega.Voce deve fazer algumas verificações.Antes de postar o FORM, você precisa Selecionar todos os itens no ListRight, senão, não serão enviados seus valores para a próxima página.VerifiqueSe ainda assim não funcionar, post seu código para a gente dar uma olhada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega.

 

Voce deve fazer algumas verificações.

Antes de postar o FORM, você precisa Selecionar todos os itens no ListRight, senão, não serão enviados seus valores para a próxima página.

 

Verifique

Se ainda assim não funcionar, post seu código para a gente dar uma olhada.

<{POST_SNAPBACK}>

Vou postar meu código direto que é mais rapido. A função Java Script que uso é a seguinte:

 

<script LANGUAGE="JavaScript">

<!-- Begin

// Compare two options within a list by VALUES

 

function compareOptionValues(a, B)

{

// Radix 10: for numeric values

// Radix 36: for alphanumeric values

var sA = parseInt( a.value, 36 );

var sB = parseInt( b.value, 36 );

return sA - sB;

}

 

// Compare two options within a list by TEXT

function compareOptionText(a, B)

{

// Radix 10: for numeric values

// Radix 36: for alphanumeric values

var sA = parseInt( a.text, 36 );

var sB = parseInt( b.text, 36 );

return sA - sB;

}

 

// Dual list move function

function moveDualList( srcList, destList, moveAll )

{

// Do nothing if nothing is selected

if ( ( srcList.selectedIndex == -1 ) && ( moveAll == false ) )

{

return;

}

newDestList = new Array( destList.options.length );

var len = 0;

for( len = 0; len < destList.options.length; len++ )

{

if ( destList.options[ len ] != null )

{

newDestList[ len ] = new Option( destList.options[ len ].text, destList.options[ len ].value, destList.options[ len ].defaultSelected, destList.options[ len ].selected );

}

}

 

for( var i = 0; i < srcList.options.length; i++ )

{

if ( srcList.options != null && ( srcList.options.selected == true || moveAll ) )

{

// Statements to perform if option is selected

// Incorporate into new list

newDestList[ len ] = new Option( srcList.options.text, srcList.options.value, srcList.options.defaultSelected, srcList.options.selected );

len++;

}

}

 

// Sort out the new destination list

newDestList.sort( compareOptionValues ); // BY VALUES

//newDestList.sort( compareOptionText ); // BY TEXT

// Populate the destination with the items from the new array

 

for ( var j = 0; j < newDestList.length; j++ )

{

if ( newDestList[ j ] != null )

{

destList.options[ j ] = newDestList[ j ];

}

}

 

// Erase source list selected elements

for( var i = srcList.options.length - 1; i >= 0; i-- )

{

if ( srcList.options != null && ( srcList.options.selected == true || moveAll ) )

{

// Erase Source

//srcList.options.value = "";

//srcList.options.text = "";

srcList.options = null;

}

}

} // End of moveDualList()

// End -->

</script>

 

Os botões que chamam essa função e transitam os valores entre os selects são os seguintes:

 

<input type="button" class="btBuscar" onClick="moveDualList( this.form.listLeft, this.form.listRight, false )" name="Add >>" value="incluir >>">

 

e

 

<input type="button" class="btBuscar" onClick="moveDualList( this.form.listRight, this.form.listLeft, false )" name="Add <<" value="excluir <<">

 

Ja os ditos selects estão com o seguinte codigo:

 

listLeft

 

participantes = exec_strCompromisso("participantes")

 

if participantes <> "" then

while not exec_strCons.eof

procurapor = exec_strCons("id_cons")

participasn = Instr(participantes, procurapor)

if participasn = 0 then

%>

<option value="<%= exec_strCons("id_cons") %>"><%= exec_strCons("cons_nome") %></option>

<%

end if

exec_strCons.movenext

wend

else

while not exec_strCons.eof

%>

<option value="<%= exec_strCons("id_cons") %>"><%= exec_strCons("cons_nome") %></option>

<%

exec_strCons.movenext

wend

end if

 

 

Onde a variável participantes, é o valor que está no Banco de Dados e que deve ser verificado se o id atual não está na string de participantes.

 

Agora o código do listRight:

 

if exec_strCompromisso("participantes") <> "" then

arrayParticipa = Split(exec_strCompromisso("participantes"),",")

For i=LBound(arrayParticipa) to UBound(arrayParticipa)

strNomCons="select * from consultores where id_cons = '" & arrayParticipa(i) & "'"

Set rs_strNomCons = Conexao.Execute(strNomCons)

%>

<option value="<%= rs_strNomCons("id_cons") %>"><%= rs_strNomCons("cons_nome") %></option>

<%

next

end if

 

 

Como pode-se ver, eu pego o valor que esta no Banco de dados, algo como 2,25,100,24,10 e transformo num array, e no loop faço os options.

 

É simplesmente isso. Como disse, funciona perfeitamente na inserção de registro mas, na alteração, não funciona.

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.