[RESOLVIDO] Evento ajax onclick em uma grid

Pessoal, estou com uma dúvida. Tenho um campo virtual do tipo imagem que faz ligação com outra aplicação. Coloquei um evento onclick nesse campo para fazer um update quando clicado, mas o update não está sendo executado. Acho que a ligação com a outra aplicação está tendo prioridade sobre o onclick e está sendo executada primeiro.

Fiz um teste removendo a ligação, e o update funcionou normalmente, é possível executar primeiro o onclick e depois fazer a ligação?

faça o update na aplicação chamada, no evento onapplicationinit.

Se a aplicação for chamada por outras aplicações ou menu, passe ou parâmetro para somente executar o update quando for chamado dessa grid.

Funcionou!! Muito obrigada! Só mais uma dúvida (não sei se precisa criar outro tópico). É possível desabilitar este campo imagem na grid a partir de determinada condição? Por exemplo, tenho uma condição: se a linha atender a condição, deixar o campo como readonly. Pesquisei na IA, mas os scripts que ela me deu não funcionaram muito bem.

Ela me retornou isso:

  1. Adicionar um campo virtual no evento onRecord para armazenar a condição:
if ({seu_campo} == 'condição_específica') {
    {campo_virtual} = 'readonly';
} else {
    {campo_virtual} = '';
}
  1. Adicionar um script JavaScript no evento onScriptInit para aplicar a propriedade readonly:
?>
<script>
function setReadonly() {
    var rows = document.querySelectorAll('.scGridFieldOddFont');
    rows.forEach(function(row) {
        var condition = row.querySelector('[id^="id_sc_field_campo_virtual"]').innerText;
        if (condition === 'readonly') {
            var inputField = row.querySelector('[id^="id_sc_field_seu_campo"]');
            if (inputField) {
                inputField.setAttribute('readonly', 'readonly');
            }
        }
    });
}
window.onload = setReadonly;
</script>
<?php

via copilot

Adaptei de acordo com as minhas condições, mas não funcionou. Você teria uma ideia ou solução mais fácil para deixar o campo como readonly?

veja:

https://www.youtube.com/watch?v=8qdDtUWRArE

ou

Eu sou contra essas soluções JS que ficam varrendo elementos na página.

veja a macro sc_link

desfaça aligação e use sc_link no campo apenas quando houver a condição.

ou utilize grid tollbar da própria ferramenta ou a classe ActionsMaster (https://github.com/InfinitusWeb/Actions-Master)

ou crie um campo virtual do tipo texto, e atribua uma tag img a ele somente quando a condição for verdadeira, isso juntamente com a macro sc_link

o pior é quando a gente não sabe manipular essas varreduras em JS, esse é o meu caso… com as suas ideias, criei um campo virtual do tipo texto e atribui a imagem e, a partir de determinada condição, exibo ou não o conteúdo do campo junto com o sc_link e funcionou! valeu pela ajuda!!

1 Curtida

código js em evento onscriptinit em app grid não rola.

Precisa ser no evento onfooter, mas tem que habilitar o rodapé.

mas sempre tem uma solução.

3 Curtidas