Criei inicialmente no Salesforce, uma página Visualforce com uma tabela de contas. Essa tabela foi criada através um pageBlockTable com uma Column que exibe o nome (name) da Conta e outra coluna com o Link para exclusão. Veja:
<apex:page controller="AccountController">
<apex:form>
<apex:PageBlock>
<apex:pageBlockTable id="Contas" value="{!listaContas}" var="itemConta" title="Lista de Contas">
<apex:column headerValue="Nome" value="{!itemConta.name}" />
<apex:column headerValue="">
<apex:commandLink value="Apagar" action="{!Excluir}" onclick="return window.confirm('Deseja realmente remover essa Conta?');">
<apex:param name="contaId" value="{!itemConta.Id}" assignTo="{!idAccountDelete}"/>
</apex:commandLink>
</apex:column>
</apex:pageBlockTable>
</apex:PageBlock>
</apex:form>
</apex:page>
Repare que na segunda coluna no meu Visualforce, eu uso o apex:CommandLink para criar um link de exclusão do registro:
<apex:commandLink value="Apagar" action="{!Excluir}" onclick="return window.confirm('Deseja realmente remover essa Conta?');">
<apex:param name="contaId" value="{!itemConta.Id}" assignTo="{!idAccountDelete}"/>
</apex:commandLink>
Nesse CommandLink eu referencio o método (action) que será chamado na minha classe controller (irei falar dela mais a frente). Esse método, dei o nome de Excluir. Também coloquei um recurso JavaScript para confirmar a exclusão (window.confirm), através da propriedade onclick.
Logo em seguida uso o apex:param para atribuir o ID daquela conta da linha (da tabela), à propriedade idAccountDelete. Essa será usada para definir a exclusão.
Veja agora como ficou minha classe controller. Inicialmente defino a lista que será usada para popular a PageBlockTable e a propriedade (acima descrita) que armazenará o ID da Conta que será excluída. Em seguida o construtor da classe controller e o método de exclusão:
public class AccountController {
public Id idAccountDelete { get; set; }
public List<Account> listaContas { get; set; }
public AccountController(){
this.listaContas = [SELECT id, name FROM Account ORDER BY name];
}
public PageReference Excluir(){
Account conta = [SELECT id FROM Account WHERE id = :this.idAccountDelete];
delete conta;
return null;
}
}
Veja que no construtor - public AccountController() - busco os dados que serão exibidos na tabela. Já no método de exclusão - public PageReference Excluir() - Eu apago a conta, baseada na propriedade idAccountDelete, que recebeu o ID da conta da linha (da tabela), em que se clicou no link "Apagar".
O resultado final foi:
Página Visualforce renderizada
Mensagem para confirmação da exclusão
Nenhum comentário:
Postar um comentário