Dúvida
Tenho uma tabela pai e filha em um formulário, e um botão Buscar que alimenta esta tabela filha. Preciso que ao alterar o filtro e acionar buscar, execute uma função que apague os registros da tabela filha.
Vi que existe a função fnWdkRemoveChild(oElement), porém o que deve ser passado neste oElement para que apague as linhas?
Ambiente
TOTVS Fluig - Plataforma - Formulários - Todas as versões
Solução
Você pode chamar a função fnCustomDelete para apagar as linhas da tabela. O que define a linha a ser deletada é o this na função fnCustomDelete, com isso as linhas são apagadas uma a uma.
O this passado para a função é a linha que ele vai remover, no caso esse oElement é o this que será recebido na função, por exemplo:
<table tablename="teste" customFnDelete="fnCustomDelete(this)">
Para apagar diversos registros deve ser utilizado um loop. Você pode utilizar algo assim:
function fnCustomDelete(oElement){
// Recuperar o valor do registro filho que está sendo eliminado
// var valor = $(oElement).closest('tr').find("input[id^='NAME_CAMPO']").val();
// alert ("O valor do campo Cliente e: " + valor);
// Remover o registro filho
$('#IdPaiXfilho').find('tbody tr').each(function(index, item) {
console.log(item);
if (index > 0) { // Ignora a primeira opção, pois a posição 0 e a linha que possui os titulos da colunas
fnWdkRemoveChild(item);
alert ("Filho eliminado!");
}
});
Saiba Mais
Confira abaixo dois exemplos de como excluir 1 linha do paiFilho e como excluir todas as linhas do paiFilho:
Excluir 1 linha do paiFilho:
Supondo que dentro do meu paiFilho eu tenha um input com nome de InputQT___1, para deletar toda a linha basta você passar o elemento desta forma com jQuery:
fnWdkRemoveChild($("#InputQT___1")[0]);
ou desta forma com JavaScript puro:
fnWdkRemoveChild(InputQT___11);
Com JavaScript puro o id do campo paiFilho deve ser passado direto e não como string.
Excluir todos os filhos de um paiFilho:
function removeAllPaiFilhos(idFilho){
$("[id^="+idFilho+"___]").toArray().forEach((e,i)=>{
fnWdkRemoveChild(e);
})
}
Após adicionar esta função em seus arquivo de funcoes.js, basta chamar através do seu botão de exclusão via evento onClick (passando um ID sem os underlines), conforme abaixo:
onclick="removeAllPaiFilhos('InputQT')"
Importante: Lembrando que os trechos de código repassados acima são exemplos e devem ser adaptados ao cenário de cada cliente.
A documentação completa sobre as funções pode ser acessada em Desenvolvimento de formulários.
0 Comentários