Нужна функция которая бы удаляла только конкретный рекорд.
<apex:column >
<apex:commandButton value="delete" action="{!deleterecord}"/>
</apex:column>
delete [SELECT Id FROM {my_type__c} WHERE Id =:{get_id}]
<apex:commandButton id="{!item.Id}" value="delete" action="{!deleterecord}"/>
Нужна функция которая бы удаляла только конкретный рекорд. [code] <apex:column > <apex:commandButton value="delete" action="{!deleterecord}"/> </apex:column> [/code] И в контроллере что вроди етого [code] delete [SELECT Id FROM {my_type__c} WHERE Id =:{get_id}] [/code] Как мне засетать в <apex:commandButton> Id? [code]<apex:commandButton id="{!item.Id}" value="delete" action="{!deleterecord}"/>[/code] Выдает ошибку - Error: Literal value is required for attribute id in <apex:commandButton> И как мне потом в контроллере достать етот ID?
вот этим воспользуйся для передачи параметров
https://www.salesforce.com/docs/developer/pages/Content/pages_compref_param.htm
вот этим воспользуйся для передачи параметров 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;
}
Так ничего... [code] <apex:column > <apex:commandButton value="delete" action="{!deleterecord}"> <apex:param name="cid" value="{!item.Id}"/> </apex:commandButton> </apex:column> [/code] [code] public PageReference deleterecord(){ delete [SELECT Id FROM Task__c WHERE Id =: ApexPages.currentPage().getParameters().get('cid')]; return null; } [/code]
Поменял commandButton на
<apex:commandLink action="{!deleterecord}">
delete
<apex:param name="cid" value="{!item.Id}"/>
</apex:commandLink>
И все вроде работает. Хм...
Поменял commandButton на [code] <apex:commandLink action="{!deleterecord}"> delete <apex:param name="cid" value="{!item.Id}"/> </apex:commandLink> [/code] И все вроде работает. Хм...
Во первых 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
Во первых 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
Повезло !
[quote="remember"]И все вроде работает. Хм...[/quote] Повезло :D !
У кого такая же проблема,
вот части рабочего кода моего рабочего кода с комментариями.
Попробуйте понять логику, кому то может помочь.
Для контроллера
// Пишем Редактирование и Удаление записей столбец
// 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>
|
<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
У кого такая же проблема, вот части рабочего кода моего рабочего кода с комментариями. Попробуйте понять логику, кому то может помочь. Для контроллера [code] // Пишем Редактирование и Удаление записей столбец // 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(); // обновить данные } [/code] для страницы: [code] <apex:column> <apex:outputLink title="Edit | Del" value="/{!row.id}/e?retURL=/apex/{!$CurrentPage.Name}" style="font-weight:bold"> Edit </apex:outputLink> | <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>[/code] для страницы функция [code] </apex:pageBlock> <apex:actionFunction action="{!DeleteAccount}" name="DeleteAccount" reRender="form"> <apex:param name="accountid" value="" assignTo="{!SelectedAccountId}" /> </apex:actionFunction> </apex:form> </apex:page>[/code] Источник статьи: http://salesforcesource.blogspot.com/2009/09/edit-and-delete-command-for-your.html Мой рабочий код: https://gitlab.com/domovikx/tx002/tree/master
Совет. Если хочется пользоваться git, то лушче туда закидывать весь проект (папка src), а не отдельные файлы вручную c непонятными разширениями.
Совет. Если хочется пользоваться git, то лушче туда закидывать весь проект (папка src), а не отдельные файлы вручную c непонятными разширениями.