Регистрация  |  Вход

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?

Нужна функция которая бы удаляла только конкретный рекорд.
[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



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

Повезло !

[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>
&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

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

Для контроллера
[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>
                    &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>[/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 непонятными разширениями.