Delete Function

Delete Function

Нужна функция которая бы удаляла только конкретный рекорд.

<apex:column >

<apex:commandButton value="delete" action="{!deleterecord}"/>
</apex:column>

И в контроллере что вроди етого
delete [SELECT Id FROM {my_type__c} WHERE Id =:{get_id}]

Как мне засетать в <apex:commandButton> Id?
<apex:commandButton id="{!item.Id}" value="delete" action="{!deleterecord}"/>

Выдает ошибку - Error: Literal value is required for attribute id in <apex:commandButton>
И как мне потом в контроллере достать етот ID?

вот этим воспользуйся для передачи параметров
https://www.salesforce.com/docs/developer/pages/Content/pages_compref_param.htm

Так ничего...

<apex:column >

<apex:commandButton value="delete" action="{!deleterecord}">
<apex:param name="cid" value="{!item.Id}"/>
</apex:commandButton>
</apex:column>

public PageReference deleterecord(){

delete [SELECT Id FROM Task__c WHERE Id =: ApexPages.currentPage().getParameters().get('cid')];
return null;
}

Поменял commandButton на

<apex:commandLink action="{!deleterecord}">

delete
<apex:param name="cid" value="{!item.Id}"/>
</apex:commandLink>

И все вроде работает. Хм...

Во первых apex:commandButton не поддерживает apex:param
по ссылке есть список тегов которые поддерживают.
в твоем случае надо использовать или <apex:commandLink> или <apex:actionFunction>

Во вторых "ApexPages.currentPage().getParameters().get('cid')" это получение параметров из GET запроса (товарищи гуру, про недокументированные возможности пока не надо), а ты делаешь вызов метода контроллера из VF страницы (это совсем разные понятия).

Вот тут описан готовый пример того что ты хочешь сделать
http://salesforcesource.blogspot.in/2009/09/edit-and-delete-command-for-your.html

remember
И все вроде работает. Хм...

Повезло !

У кого такая же проблема,
вот части рабочего кода моего рабочего кода с комментариями.
Попробуйте понять логику, кому то может помочь.

Для контроллера

// Пишем Редактирование и Удаление записей столбец

// Edit записи - реализовано только на странице - переходом по ссылке
// DEL записи - делаем на странице и здесь
public string SelectedAccountId { get; set; } // фиксация выбранной записи для удаления
public void DeleteAccount(){
if (SelectedAccountId == null) { return; } // если НЕТ ссылки
// находим ID записи учетной записи по запросу
Contact tobeDeleted = null;
for (Contact a : [SELECT Id FROM Contact])
if (a.Id == SelectedAccountId) {
tobeDeleted = a;
break;
}

if (tobeDeleted != null) { Delete tobeDeleted; } // если найдена запись учетной записи, удалите ее

getContact(); // обновить данные
}

для страницы:

<apex:column>

<apex:outputLink title="Edit | Del" value="/{!row.id}/e?retURL=/apex/{!$CurrentPage.Name}" style="font-weight:bold">
Edit
</apex:outputLink>
&nbsp;|&nbsp;
<a href="javascript:if (window.confirm('Are you sure you want to DELETE the record?')) DeleteAccount('{!row.Id}');" style="font-weight:bold">
Del
</a>
</apex:column>

для страницы функция

</apex:pageBlock>

<apex:actionFunction action="{!DeleteAccount}" name="DeleteAccount" reRender="form">
<apex:param name="accountid" value="" assignTo="{!SelectedAccountId}" />
</apex:actionFunction>

</apex:form>
</apex:page>

Источник статьи: http://salesforcesource.blogspot.com/2009/09/edit-and-delete-command-for-your.html
Мой рабочий код: https://gitlab.com/domovikx/tx002/tree/master

Совет. Если хочется пользоваться git, то лушче туда закидывать весь проект (папка src), а не отдельные файлы вручную c непонятными разширениями.

Interesting information? Help us, post link to social media..