VisualForce:传递给控制器​​的参数为null

时间:2014-06-28 12:34:37

标签: salesforce visualforce apex

出于某种原因,当尝试删除行时,SelectedRow Id会一直显示为null,无法找出原因。我的页面内置了一个表,我想添加一个commandlink来删除一个特定的行。尝试删除它时,它会一直显示为空。

我的页面:

<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 个答案:

答案 0 :(得分:0)

我认为您可以从

转储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获取一些灵感?