desabilitar e habilitar botao de editar para cada registro em um formulario

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:

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.

Cada linha é um item de um array, o nome do campo muda para cada linha e o nome do botão também.

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!

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:

if (id = 3) { sc_error_mesage ("registro não pode ser alterado !"); sc_error_exit(); }

Numa grid voce não pode desabilitar os botões por registro.

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’);
}

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

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.

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}="";
} //fecha if
$i++; //incrementa 1

Confere essa logica?

Obrigado!

Só testando pra ver.

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.

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?

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