使用 Apex Repeat 填充 Visualforce Table
Using Apex Repeat to Populate a Visualforce Table
我的列表似乎是空白的,没有通过控制器扩展传递,或者某些问题导致我的 table 没有填充预期的数据。此 visualforce 页面正在从工单上的自定义按钮加载。
我尝试使用以下方法填充数据:
:ApexPages.CurrentPage().getParameters().get('id')
除了硬编码我认为是代码示例中所示的 'id'。
VF页面如下:
<apex:page Standardcontroller="WorkOrder" extensions="cWOInvoice1" renderAs="pdf">
<apex:form >
...
<table style="...">
<tbody style="...">
<tr style="display:table-row;">
<th style="...">Scope of Work</th>
<th style="...">Trade</th>
<th style="...">Price</th>
</tr>
<apex:repeat value="{!woli}" var="woli">
<tr>
<td style = "...">{!woli.Repair_Product__r.Name}</td>
<td style = "...">{!woli.Repair_Product__r.Trade__c}</td>
<td style = "...">${!woli.Item_Price_Roll_Up_Sub__c}</td>
</tr>
</apex:repeat>
</tbody>
</table>
...
</body>
</apex:form>
</apex:page>
控制器看起来像这样(再次硬编码 workOrderID 用于错误测试):
public class cWOInvoice1 {
public WorkOrderLineItem woli {get;set;}
public cWOInvoice1(ApexPages.StandardController controller){
List<WorkOrderLineItem>woli=[SELECT Id, Area__c, Tenant_Responsible__c, WorkOrderId, Repair_Product__r.Name, Repair_Product__r.Bill_Rate_Retail__c, Repair_Product__r.Bill_Rate__c, Repair_Product__r.Trade__c FROM WorkOrderLineItem WHERE WorkOrderId='0WO55000000Cw4LGAS'];
}
}
我希望自定义控制器通过 apex repeat 然后显示在 table 中的工作订单行项目列表。相反,我得到一个空的 table.
您在不同范围内使用两种不同类型声明了变量 woli
。
在控制器层,woli
是一个单一的WorkOrderLineItem
成员变量:
public WorkOrderLineItem woli {get;set;}
因为它从未被初始化,所以它的值为null
。
在您的构造函数中,您将 woli
重新声明为 List<WorkOrderLineItem>
并对其进行初始化:
public cWOInvoice1(ApexPages.StandardController controller){
List<WorkOrderLineItem>woli=[SELECT Id, Area__c, Tenant_Responsible__c, WorkOrderId, Repair_Product__r.Name, Repair_Product__r.Bill_Rate_Retail__c, Repair_Product__r.Bill_Rate__c, Repair_Product__r.Trade__c FROM WorkOrderLineItem WHERE WorkOrderId='0WO55000000Cw4LGAS'];
}
此值在构造函数结束时超出范围,永远不会对您的页面可用。
您需要删除局部声明并更正成员变量的类型。
无论您的 <apex:repeat>
当前是否编译(我不确定这是否合法或不符合我的想法),您应该将迭代变量更改为与绑定 属性:
<apex:repeat value="{!woli}" var="woli">
您可能希望使控制器 属性 类似于 woliList
来说明。
我的列表似乎是空白的,没有通过控制器扩展传递,或者某些问题导致我的 table 没有填充预期的数据。此 visualforce 页面正在从工单上的自定义按钮加载。
我尝试使用以下方法填充数据: :ApexPages.CurrentPage().getParameters().get('id')
除了硬编码我认为是代码示例中所示的 'id'。
VF页面如下:
<apex:page Standardcontroller="WorkOrder" extensions="cWOInvoice1" renderAs="pdf">
<apex:form >
...
<table style="...">
<tbody style="...">
<tr style="display:table-row;">
<th style="...">Scope of Work</th>
<th style="...">Trade</th>
<th style="...">Price</th>
</tr>
<apex:repeat value="{!woli}" var="woli">
<tr>
<td style = "...">{!woli.Repair_Product__r.Name}</td>
<td style = "...">{!woli.Repair_Product__r.Trade__c}</td>
<td style = "...">${!woli.Item_Price_Roll_Up_Sub__c}</td>
</tr>
</apex:repeat>
</tbody>
</table>
...
</body>
</apex:form>
</apex:page>
控制器看起来像这样(再次硬编码 workOrderID 用于错误测试):
public class cWOInvoice1 {
public WorkOrderLineItem woli {get;set;}
public cWOInvoice1(ApexPages.StandardController controller){
List<WorkOrderLineItem>woli=[SELECT Id, Area__c, Tenant_Responsible__c, WorkOrderId, Repair_Product__r.Name, Repair_Product__r.Bill_Rate_Retail__c, Repair_Product__r.Bill_Rate__c, Repair_Product__r.Trade__c FROM WorkOrderLineItem WHERE WorkOrderId='0WO55000000Cw4LGAS'];
}
}
我希望自定义控制器通过 apex repeat 然后显示在 table 中的工作订单行项目列表。相反,我得到一个空的 table.
您在不同范围内使用两种不同类型声明了变量 woli
。
在控制器层,woli
是一个单一的WorkOrderLineItem
成员变量:
public WorkOrderLineItem woli {get;set;}
因为它从未被初始化,所以它的值为null
。
在您的构造函数中,您将 woli
重新声明为 List<WorkOrderLineItem>
并对其进行初始化:
public cWOInvoice1(ApexPages.StandardController controller){
List<WorkOrderLineItem>woli=[SELECT Id, Area__c, Tenant_Responsible__c, WorkOrderId, Repair_Product__r.Name, Repair_Product__r.Bill_Rate_Retail__c, Repair_Product__r.Bill_Rate__c, Repair_Product__r.Trade__c FROM WorkOrderLineItem WHERE WorkOrderId='0WO55000000Cw4LGAS'];
}
此值在构造函数结束时超出范围,永远不会对您的页面可用。
您需要删除局部声明并更正成员变量的类型。
无论您的 <apex:repeat>
当前是否编译(我不确定这是否合法或不符合我的想法),您应该将迭代变量更改为与绑定 属性:
<apex:repeat value="{!woli}" var="woli">
您可能希望使控制器 属性 类似于 woliList
来说明。