Impedir deletar filho da tabela

Boa tarde,

Estou com um formulário em que tenho várias tabelas pai e filho e, dependendo da atividade, preciso impedir que o usuário possa deletar filhos de determinada tabela. Estou na dúvida de como fazer isso porque não posso utilizar a função que tira todos os botões:


function displayFields(form, customHTML) {
   var state = getValue("WKNumState");

    if (state == x) { // código da sua atividade
        form.setHideDeleteButton(true);
    }
}

Como posso utilizar essa mesma lógico porém escondendo o botão de uma ou mais tabelas específicas em atividades específicas?

Agraço desde já.

abs,

Bom dia ,

No display Fields do formulario,

Colocar na atividade na qual queira não mostrar a possibilidade de excluir os filhos da table :


form.setHideDeleteButton(true);

Ex:


function displayFields(form,customHTML){

    var activity = getValue('WKNumState');

    customHTML.append("<script>");
    customHTML.append("$(document).ready(function(){ "); 


    if (activity == 3 ) {

        form.setHideDeleteButton(true);


    }


    customHTML.append(" });");
    customHTML.append("</script>");

}

ou pode colocar escondendo colocar o botao custimizado da table e posteriormente escondendo a mesma,

ex :


      if (activity == 26) {

        customHTML.append(" $('.fluigicon fluigicon-trash fluigicon-md').hide();");


    }

Abri chamado de melhoria sobre esta funcao, para colocar um parametro de ID da table, porem nao tive retorno..

Com isto resolvi conforme esta segunda forma, colocando a classe do button custumumizado, podendo ser ate o ID do button

Att,


adicionado exemplo de botao remover filho customizado :

Segue:

HTML :


<table id="TableTransf" tablename="TableTransf" class="table template_datatable table-striped table-bordered table-condensed table-responsive" nodeletebutton=true noaddbutton=true>                    
        <thead>
            <tr>
                <td class="teste">teste</td>                                                        
                <td class="gridDelete"></td>

            </tr>
        </thead>
        <tr>
            <td class="checkSaldo">teste</td>
            <td class="gridDelete"><button type="button" style='width: 100%' name="td_button" onclick="deletaFilho(this)"><img src="/teste/close_b_24.png"></button></td>

        </tr>
    </table>                                                                                                   
</div>

JS :


function deletaFilho(linha){            
    fnWdkRemoveChild(linha);                     
}

Pois é. Muito ruim não poder esconder o botão de excluir filhos de acordo com o name ou id da tabela. Quanto ao botão customizado eu fiquei na dúvida como implementá-lo pois quando ele é acionado como vou saber qual filho ele irá deletar. Tem algum exemplo de implementação desse botão customizado @Lucas?

Adicionado a cima… espero que funcione para ti… =D

Tentei fazer dessa forma colocando: $(“input[name=nome_tag_botão_deletar]”).hide(); Porém não deu certo. =/

recomendo usar com a class… ex.: customHTML.append(" $(‘.clasebuttonteste’).hide();");

Consegui resolver esse problema com as dicas do @Lucas da seguinte forma:

HTML:


<table id="TableTransf" tablename="TableTransf" class="table template_datatable table-striped table-bordered table-condensed table-responsive" nodeletebutton=true noaddbutton=true>                    
        <thead>
            <tr>
                <td class="teste">teste</td>                                                        
                <td class="gridDelete"></td>

            </tr>
        </thead>
        <tr>
            <td class="checkSaldo">teste</td>
            <td class="gridDelete"><button type="button" style='width: 100%' name="td_button" onclick="deletaFilho(this)"><img src="/teste/close_b_24.png"></button></td>

        </tr>
    </table>                                                                                                   
</div>

displayFields


    var activity = getValue('WKNumState');

    customHTML.append("<script>");
        customHTML.append("function getAtividade(){return '" + activity + "'};");
        customHTML.append("function getFormMode(){return '" + form.getFormMode() + "'};");
        customHTML.append("function getUser(){return '" + getValue('WKUser') + "'};");
        customHTML.append("function getProcess(){return '" + getValue('WKNumProces') + "'};");
    customHTML.append("</script>");

JS:


$(document).ready(function() {

    activity = parseInt(getAtividade());    

    if(activity != 0 && activity!= 12){
        $(".gridDelete").hide();            
    }
}

Desta forma, esse botão fica visível apenas na atividade em que o filho pode ser deletado.

Olá, Eu utilizo um função custom para ocultar as classes que desejo, então chamo essa função com o parâmetro da classe do botão que quero esconder. Quando quero ocultar todos os botões de uma determinada tabela, coloco a classe na th e nas td. Caso queira ocultar só o que está lá, eu coloco a classe somente nos ícones. Caso necessite de outra forma, está abaixo. Scripts para ser implementado e utilizado no displayFields()


function ocultaName(variavel) {
        customHTML.append('<script>                                       ');
        customHTML.append('$(\'[name="' + variavel + '"]\').css(\'display\', \'none\');                      ');
        customHTML.append('$([name="' + variavel + '"]).parent().css(\'display\', \'none\');                                     ');
        customHTML.append('var closers = $([name="' + variavel + '"]).closest(\'.form-field\').find(\'input, textarea, select, table\');');
        customHTML.append('var hideDiv = true;                                                                               ');
        customHTML.append('$.each(closers, function(i, close) {                                                              ');
        customHTML.append('  if (close.style.display != \'none\') {                                                          ');
        customHTML.append('    hideDiv = false;                                                                              ');
        customHTML.append('  }                                                                                               ');
        customHTML.append('});                                                                                               ');
        customHTML.append('                                                                                                  ');
        customHTML.append('if (hideDiv == true) {                                                                            ');
        customHTML.append('  $([name="' + variavel + '"]).closest(\'.form-field\').css(\'display\', \'none\');                   ');
        customHTML.append('}                                                                                                 ');
        customHTML.append('$(\'[name="' + variavel + '"]\').closest(".form-field").hide();                                       ');
        customHTML.append('</script>                                       ');
    }

    function ocultaClasse(classe) {
        customHTML.append('<script>');
        customHTML.append('$(\'.' + classe + '\').css(\'display\', \'none\')');
        customHTML.append('</script>');
    }

    function ocultaId(id) {
        customHTML.append('<script>');
        customHTML.append('$(\'#' + id + '\').css(\'display\', \'none\')');
        customHTML.append('</script>');
    }

Agora é só chamar a função de acordo com o que quer esconder e passar o parâmetro para a função Exemplo:


if(atividade === 0){
    ocultaClasse('trash-table-funcionario')//Parâmetro de classe
    ocultaId('nameFuncionario')//Parâmetro de id
    ocultaName('nameFuncionario')//Parâmetro de name
}

Espero ter ajudado Abraço Marcos Michalski

Tive a mesma necessidade, consegui resolver de um jeito diferente, talvez sirva pra vocês. eu escondo completamente as colunas quero pelo indice da coluna, desse jeito:


 customHTML.append("<script>");
    customHTML.append("$(document).ready(function(){ "); 

        customHTML.append(" $('#tableRequisicao').find('th').eq(0).hide(); ");
        customHTML.append(" $('#tableRequisicao').find('td').eq(0).hide(); ");
        customHTML.append(" $('#tableRequisicao').find('th').eq(1).hide(); ");
        customHTML.append(" $('#tableRequisicao').find('td').eq(1).hide(); ");

    customHTML.append(" });");
    customHTML.append("</script>");