Autor Tópico: desabilitar e habilitar botao de editar para cada registro em um formulario  (Lida 8910 vezes)

luis.fernando

  • Novato
  • *
  • Mensagens: 40
Olá Amigos!

Gostaria de uma ajuda pois estou com uma aplicação de formulário com grid editável(view) que mostra na tela 2 ou mais registros e deveria seguir esta regra:

Registro com status = 1 , eu gostaria de deixar a opção de editar aquele registro inteiro;
Registro com status = 2  não deixar o registro editável;

Essa regra deveria ser considerada para cada registro mostrado na grid.

o problema é que eu estou usando no evento onLoadRecord o seguinte código para ativar e desativar um botão, porém ou ele ativa para todos ou desativa para todos os registros, ou seja, não funciona para cada um dos registros:

Código: [Selecionar]
if({status}=='2') // registro com status 2 nao pode mais ser editado
{
sc_btn_display ('update', 'off');
}else{
sc_btn_display ('update', 'on');
}

Não seria possível executar essa regra para o botao atualizar de cada registro individualmente?

Agradeço se alguém tiver uma solução.
« Última modificação: Agosto 30, 2011, 11:46:33 am por luis.fernando »

Haroldo

  • Expert
  • *****
  • Mensagens: 6264
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:desabilitar e habilitar botao de editar registro no formulario
« Responder #1 Online: Agosto 30, 2011, 11:33:48 am »
Cada linha é um item de um array, o nome do campo muda para cada linha e o nome do botão também.

luis.fernando

  • Novato
  • *
  • Mensagens: 40
Re:desabilitar e habilitar botao de editar registro no formulario
« Responder #2 Online: Agosto 30, 2011, 11:39:17 am »
Pelo que entendi seria possível eu utilizar a macro para cada registro utilizando a chamada do botão com array da linha?!

Você teria um exemplo de chamada do botão para a primeira linha do array?

Grato!

luis.fernando

  • Novato
  • *
  • Mensagens: 40
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #3 Online: Agosto 30, 2011, 02:25:26 pm »
Bem, não sei se alguém tem alguma dica mais clara que a do Haroldo, mas uma alternativa mais 'pobre' que encontrei foi essa no próprio forum

faça critica no before update:

Código: [Selecionar]
if (id = 3)
  {
   sc_error_mesage ("registro não pode ser alterado !");
   sc_error_exit();
  }

wanderlanlima

  • Intermediário
  • ***
  • Mensagens: 241
    • Email
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #4 Online: Agosto 30, 2011, 03:42:20 pm »
Numa grid voce não pode desabilitar os botões por registro.

Arquimedes

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 560
  • Ajudar para ser ajudado
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #5 Online: Agosto 30, 2011, 05:03:14 pm »
seria possivel sim, porem nao deve incia no onload, e sim em campo com uma funcao ajax, o campo pode ser o proprio status com a funcao ajax onchang e cria um metodo php status();
ao selecionar o tipo de status exibe e esconde o botao de update

if({status}=='1') // registro com status 2 nao pode mais ser editado
{
   sc_btn_display ('update', 'on');
}
elseif({status}=='2')
{
   sc_btn_display ('update', 'off');
}

luis.fernando

  • Novato
  • *
  • Mensagens: 40
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #6 Online: Agosto 31, 2011, 06:25:49 pm »
Pelo que testei também não dá para fazer deste método via Ajax no onchange como o amigo sugeriu.

Mas ví este códigos onde é usado as propriedades  (onrecord e onfinish) do botão para criar um array.
Não sei se é algo assim o que o Haroldo sugeriu.

http://www.scriptcase.com.br/site/samples/tutoriais/grid/grid44.php
« Última modificação: Agosto 31, 2011, 06:42:32 pm por luis.fernando »

Haroldo

  • Expert
  • *****
  • Mensagens: 6264
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #7 Online: Agosto 31, 2011, 09:08:24 pm »
Pegue o codigo dos botoes pelo inspecionar do google. Desbilite os botoes. Crie uma campo do tipo label, e jogue o codigo dos botões conforme o status, na onloadrecord.

luis.fernando

  • Novato
  • *
  • Mensagens: 40
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #8 Online: Setembro 01, 2011, 10:23:33 am »
Correto Haroldo!

Agora se eu tiver 3 registros, cada um com seu botão editar (desligado) e eu quiser ativar o botão editar do 2o registro onde o {status}==2

Terei que fazer um contador na onloadrecord para ele ir incrementando um valor onde usarei para ligar apenas o botão na posição correta? (para automatizar a coisa)

ex:

(onInit)
$i=1;

(onLoadRecord)
if({status}==2)
{
   {botao_label}="<input id="sc_open_line_$i" type="image" style="vertical-align: middle" title="Editar esta linha" onclick="mdOpenLine($i); return false" src="/scriptcase/app/teste2/_lib/img/scriptcase__NM__nm_Scriptcase5_Silver_bmd_edit.gif">";
} //fecha if
$i++; //incrementa 1

Confere essa logica?

Obrigado!
« Última modificação: Setembro 01, 2011, 10:25:06 am por luis.fernando »

Haroldo

  • Expert
  • *****
  • Mensagens: 6264
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #9 Online: Setembro 01, 2011, 09:07:53 pm »
Só testando pra ver.

luis.fernando

  • Novato
  • *
  • Mensagens: 40
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #10 Online: Setembro 02, 2011, 11:57:15 am »
Acho que vou esperar isso virar uma macro.
Mo treta. Até consegui fazer o editar aparecer no registro que eu gostaria mas a ediçao nao funcionou.
Deve ter faltado mais algumas linhas que compoem as acoes do botao editar.

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #11 Online: Novembro 18, 2011, 09:48:24 am »
Vou ressuscitar este tópico porque estou com a mesma dificuldade, e pensei em algo.
Se conseguissemos criar um evento com jquery ou javascript puro que fosse carregado no onLoadRecord e alterasse a propriedade "display" do elemento input de exclusão e edição para "none" no registro em questão já teríamos uma solução bem legal.

Alguém manja de JQuery ou javascript pra dar uma força?

Giovane Martins

  • Novato
  • *
  • Mensagens: 11
    • IDesenv Sistemas Integrados
Re:desabilitar e habilitar botao de editar para cada registro em um formulario
« Responder #12 Online: Agosto 25, 2012, 01:01:12 am »
Sei que o tópico está 'passado', mas tive o mesmo problema em um projeto, e contornei do seguinte modo:

Utilizo uma grid e um formulário. Na grid, desabilitei as ligações com o formulário e fiz 'na munheca'. Criei um botão "Novo" ligado a aplicação formulário. Escolhi um dos campos (no meu caso o campo NOME) e fiz uma ligação dele para o formulário enviando o id do registro. Detalhe importante: Meu formulário é do tipo Único Registro. Formulários do tipo Multiplos registros ou Grid Editável e Grid Editável (view) não funcionam!

No onLoad do formulário, verifico se um dos campos (extrato) da minha tabela é TRUE, se for, eu deixo todos os campos como readonly usando a macro sc_field_readonly({nome_campo}, 'on') e desabilito os botões de update e delete usando a macro sc_btn_display('update', 'off').

Ou seja, o formulário fica como se fosse apenas o 'detalhe' do registro que não pode ser editado. Para os registros que não satisfazem essa condição (extrato=FALSE), ele habilita sozinho os campos para editar e os botões de update e delete, nem precisei colocar um else, basta deixar só o IF no onLoad do formulário com os campos e botões que você deseja restringir/desabilitar.

Espero ter colaborado.

Um abraço,
Giovane Martins
IDesenv Sistemas Integrados
Um abraço,
--
Giovane Martins
IDesenv Sistemas Integrados