Certo, muito certo… o trabalho pra fazer o mau feito é o mesmo pra fazer o bem feito!
Vovô já me dizia isso. rsrsrs
Assim como: “SONHAR PEQUENO DÁ O MESMO TRABALHO DE SONHAR GRANDE”…
Dário,
Deixe seu campo para responde com o evento ajax que você escolher.
Depois no “Eventos AJAX” Crie um evento e faça uso da macro sc_ajax_javascript.
Na função javascritp tente executar o comando document.getElementById(FrameID).contentDocument.location.reload(true);
Lembre de trocar o FrameID pelo nome do frameid gerado pelo SC.
Alexandre, boa noite!
Pra pegar esse FrameID gerado pelo sc, só olhando nos fontes ou é o nome do detalhe criado no sc?
Abraço.
Rodrigo
Esqueça o que eu falei primeiro.
Veja o procedimento:
-
o iframe no sc geralmente tem este nome:
nmsc_iframe_liga_nomedoseuform
em nomedoseuform ele diferencia maiúscula da minúscula.
Para saber corretamente tem que ir até o fonte gerado e procurar por iframe. -
No form vá no menu esquerdo em Javascritp
Selecione o objeto (campo) e depois o evento onchange.
Observação: No meu caso selecionei o campo DEPT NO na demostração que coloquei na web.
clique em editar
Coloque então esta função javascritp:
document.getElementById(“nmsc_iframe_liga_nomedoseuform”).contentDocument.location.reload(true);
clique em atualizar.
Observações: Não esqueça que função tem que ter o true ou não vai funcionar no firefox.
Somente testei no Firefox e no IE.
- O reload é muito rápido se o detalhe não tem muita informação.
Pode notar aqui na minha página de teste.
www.simaoebuhler.com.br/teste/
Deverá colocar a barra de rolagem horizontal do detalhe para direita ante de ir no campo DEPT NO e alterar o valor para ver o reload.
No caso no DEPT NO altere de 600 para 500 por exemplo e mude o foco para outro campo.
Ao dar o reload ele irá recarregar o iframe e colocar a barra de rolagem de novo para esquerda.
Observação: Você pediu reload do detalhe. Ai esta a função que faz isto. Agora se ela atualiza o detalhe no reload so testando.
-
Se necessitar passar parametros entre o javascritp e o php fica como dever de casa.
Mas a idéia e mais ou menos a que tem no livro: “Dominando AJAX As melhores práticas ligadas a aplicações web escritas tanto em Java como em PHP 5 utilizando Ajax” de Edson Gonçalves - editora ciência moderna, página 118 a 125.
Não é como está lá, somente terá que usar a cabeça, captar a idéias e adptar ao sc. -
Se houver disponibilidade manda umas moedinhas para eu comprar um refri e tomar com a família aqui.
Apesar do post não ser originalmente criado por mim eu gostaria de agradecer a dica do Alexandre.
No meu caso eu preciso atualizar um detalhe a partir do onAfterDelete de outro detalhe.
Abraço!
Isso aqui é suporte de verdade, ajuda verdadeira, com exemplo de funcionamento e tudo mais e explicação detalhada.
Dizem o que o verdadeiro amor é aquele onde doamos de coração, sem orgulho, a verdadeira caridade, sem espera de retorno.
Obrigado meu desconhecido amigo Alexandre, por seu empenho em querer ajudar de verdade.
Valeu Alê,
Parabéns mermão!
É isso aí… tou dizendo, daqui a pouco a NM não ganhar um centavo furado com suporte…
[]´s
No meu caso tenho 2 detalhes, ambos apl form:
Itens do pedido
Itens removidos
Quando excluo um registro do “itens do pedido” eu insiro na tabela de itens_removidos os dados do registro excluido e quero atualizar o detalhe “itens removidos” que é apenas pra exibir estes registros. Tentei fazer com apl consulta e usar o refresh, mas o sc desloca a consulta pra direita ao navegar no form mestre, não sei pq.
Tentei:
No onAfterDelete do detalhe “itens do pedido” dar um
echo "";
Não funcionou.
Na opção javascript, no objeto Form, evento onLoad e onSubmit
document.getElementById(‘nmsc_iframe_liga_form_pedidos_itens_removidos’).contentDocument.location.reload(true);
Também não funcionou.
Há algo mais a tentar?
Rodrigo
Antes de tudo obirgado a todos,
Rodrigo,
Houve uma mudança do sc5 para sc6.
Antes o sc5 colocava o javascritp que você digitava no onafterdelete ou outros luganes no ou antes de tudo, mas não via ele colocar no . Então tudo funcionava ok.
Agora o sc6 coloca no isto fez algumas coisas minhas pararem.
O local onde ele coloca o javascript gera algumas pequenas diferenças na hora de executar as coisas.
Isto é bem explicado aqui:
http://www.w3schools.com/js/js_whereto.asp
Então as vezes não é so usar um echo como se fazia no SC5, mas achar onde ele será executado corretamente no SC6.
Logo, temos que abrir o código fonte e analisar onde ele esta colocando o:
"";
Para ver se ele será executado.
Mais um detalhe.
Quando você coloca:
document.getElementById(‘nmsc_iframe_liga_form_pedidos_itens_removidos’).contentDocument.location.reload(true);
O document.getElementById irá ser válido somente para o Form itens do pedido
Para ele enxergar o outro form com a sintaxe que está usando ele deveria estar no Form mestre.
A sintaxe do comando com certeza deverá mudar.
Não me lembro bem mas talvez tenha que ficar:
parent.document.getElementById(‘nmsc_iframe_liga_form_pedidos_itens_removidos’).contentDocument.location.reload(true);
Assim funcionará de dentro do iframe para o outro iframe.
Mais informações: https://developer.mozilla.org/pt-BR/
Criando metodo javascript e acessando o mesmo via macro ajax funciona nos eventos ajax bem.
Antes de tudo obirgado a todos,
Rodrigo,
Houve uma mudança do sc5 para sc6.
Antes o sc5 colocava o javascritp que você digitava no onafterdelete ou outros luganes no ou antes de tudo, mas não via ele colocar no . Então tudo funcionava ok.
Agora o sc6 coloca no isto fez algumas coisas minhas pararem.
O local onde ele coloca o javascript gera algumas pequenas diferenças na hora de executar as coisas.Isto é bem explicado aqui:
http://www.w3schools.com/js/js_whereto.asp
Então as vezes não é so usar um echo como se fazia no SC5, mas achar onde ele será executado corretamente no SC6.
Logo, as vezes temos que abrir o código fonte e analisar onde ele esta colocando o:
"";
Para ver se ele será executado.
Rodrigo,
Deu certo colocando “parent”?
Alexandre,
Era isso mesmo que queria, muito obrigado e Parabéns pelo post.
Grato,
Dário
alguem conseguiu implementar passando parametros tbm??