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>");