Então resolvi essa situação de uma forma diferente. Comecei a trabalhar com dois componentes na tela: O apex:InputField quando eu necessitava do dele Habilitado e o apex:OutputField quando precisava dele desabilitado.
Dessa forma, veja um exemplo simples da minha classe controller:
public class DesabilitandoInputFieldController {
public boolean habilitado { get; set; }
public Account conta { get; set; }
public DesabilitandoInputFieldController(){
this.habilitado = true;
this.conta = new Account();
this.conta.Industry = 'Technology';
}
public PageReference AlteraHabilitado() {
this.habilitado = !this.habilitado;
return null;
}
}
Veja que foi criado uma propriedade na classe controller, chamado "habilitado" que é usado para dizer se o apex:InputField estará Habilitado ou Desabilitado. Foi construído também um método para realizar a habilitação/desabilitação do campo.
Agora veja minha página Visualforce:
<apex:page controller="DesabilitandoInputFieldController">
<apex:form >
<apex:PageBlock >
<apex:pageBlockButtons >
<apex:commandButton action="{!AlteraHabilitado}" value="Alterar visibilidade!"/>
</apex:pageBlockButtons>
<apex:PageBlockSection >
<apex:PageBlockSectionItem>
<apex:OutputLabel value="Conta"></apex:OutputLabel>
<apex:outputPanel>
<apex:InputField value="{!conta.Industry}" rendered="{!habilitado}"/>
<apex:OutputField value="{!conta.Industry}" rendered="{!NOT(habilitado)}"/>
</apex:outputPanel>
</apex:PageBlockSectionItem>
</apex:PageBlockSection>
</apex:PageBlock>
</apex:form>
</apex:page>
Perceba que foi colocado dentro do Apex:OutputPanel um apex:InputField e apex:OutputField. Com o rendered nesses componentes, consigo exibir um ao mesmo tempo que oculto outro. Para isso, uso o NOT, para inverter a exibição. Veja como ficou a página Visualforce, com o campo Habilitado:
Já com o campo "desabilitado", que na verdade é um OutputField:
Bem, por hoje é isso!
* Está precisando de um suporte ou uma consultoria no desenvolvimento de páginas Visualforce e classes Apex na sua ORG Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/
Nenhum comentário:
Postar um comentário