#salesforce #visualforce #apex
#salesforce #visualforce #вершина
Вопрос:
По какой-то причине идентификатор selectedRow продолжает отображаться как null при попытке удалить строку, не могу понять, почему. У меня есть таблица, встроенная в мою страницу, и я хочу добавить командную ссылку для удаления определенной строки. При попытке его удаления он продолжает отображаться как null.
Моя страница:
<apex:outputPanel id="main">
<table>
<tr>
<apex:repeat value="{!headers}" var="h">
<td class="hdr">{!h}</td>
</apex:repeat>
</tr>
<apex:repeat value="{!hours}" var="a">
<tr>
<td><apex:commandLink action="{!RowDelete}" value="delete" id="deleterow"/>
<apex:param assignto="{!SelectedRow}" value="{!a.id}" name="{!a.id}" />
</td>
<td ><apex:inputField value="{!a.Project__c}" /></td>
<td><apex:inputField value="{!a.Date__c}" /></td>
<td><apex:inputField value="{!a.StartTime__c}" /></td>
<td><apex:inputField value="{!a.EndTime__c}" /></td>
<td><apex:inputField value="{!a.Comments__c}" style="width:300px"/></td>
</tr>
</apex:repeat>
</table>
Мой контроллер:
// class variables
id MonthlyReport;
public string SelectedRow {get;set{SelectedRow=value;system.debug('TESTING SelectedRow Value is ' SelectedRow );}}
Reported_Hour__c[] hoursl;
// To Delete Row
public pagereference RowDelete() {
system.debug('TESTING: SelectedRow value is ' SelectedRow);
Reported_Hour__c rh = [select id from Reported_Hour__c where id =: this.SelectedRow];
delete rh;
return null;
}
Ответ №1:
Я думаю, вы могли бы сбросить name
бит из
<apex:param assignto="{!SelectedRow}" value="{!a.id}" name="{!a.id}" />
или, может быть, введите там что-то нерелевантное ( selectedRowParam
например). В этом отношении VF немного причудлив.
Проверьте http://bobbuzzard.blogspot.co.uk/2011/07/passing-parameters-to-apex-method-from.html для какого-то вдохновения?
Комментарии:
1. Спасибо. Я перепробовал все эти параметры, а также сделал то, что указано в ссылке, но все равно не смог решить эту проблему.
2. Используйте консоль JS в вашем любимом браузере, чтобы проверить, что указано в параметрах запроса при нажатии на вашу ссылку. Если он передается, например, в URL-адресе — проверьте имя параметра, может быть, вы сможете атаковать его с помощью
ApexPages.currentPage().getParameters().get('selectedRowparam');
?