Salesforce 使用Apex Repeat填充Visualforce表

Salesforce 使用Apex Repeat填充Visualforce表,salesforce,apex,visualforce,Salesforce,Apex,Visualforce,我的列表似乎是空的,没有与控制器扩展一起传递,或者某些问题导致我的表没有填充预期的数据。正在从工单上的自定义按钮加载此visualforce页面 我尝试使用以下方法填充数据: :ApexPages.CurrentPage().getParameters().get('id')) 除了硬编码之外,我认为是代码示例中所示的“id” VF页面如下所示: <apex:page Standardcontroller="WorkOrder" extensions="cWOInvoice1" rende

我的列表似乎是空的,没有与控制器扩展一起传递,或者某些问题导致我的表没有填充预期的数据。正在从工单上的自定义按钮加载此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>

...
工作范围
贸易
价格
{!woli.Repair\u Product\u\r.Name}
{!woli.Repair\u Product\u\r.Trade\u\u c}
${!woli.Item_Price_Roll_Up_Sub_c}
...
控制器如下所示(同样是针对错误测试而硬编码的workOrderID):

公共类CW1{
公共工作RDerLineItem woli{get;set;}
公共cWOInvoice1(ApexPages.StandardController){
Listwoli=[选择Id、区域、租户、负责人、工作区、维修产品、名称、维修产品、账单费率、零售、维修产品、账单费率、维修产品、账单费率、维修产品、交易费率、来自工作区内的项目,其中工作区=0WO5500CW4LGAS'];
}
}

我希望自定义控制器传递一个工作订单行项目列表,然后apex repeat将显示在表中。相反,我得到了一个空表。

变量
woli
在不同的范围内用两种不同的类型声明

在控制器级别,
woli
是单个
WorkOrderLineItem
成员变量:

public WorkOrderLineItem woli {get;set;}
因为它从未初始化,所以它的值是
null

在构造函数中,将
woli
重新声明为
列表
并初始化它:

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'];
}
public cWOInvoice1(ApexPages.StandardController){
Listwoli=[选择Id、区域、租户、负责人、工作区、维修产品、名称、维修产品、账单费率、零售、维修产品、账单费率、维修产品、账单费率、维修产品、交易费率、来自工作区内的项目,其中工作区=0WO5500CW4LGAS'];
}
此值在构造函数末尾超出范围,并且永远不会提供给您的页面

您需要删除本地声明并更正成员变量的类型

无论您的
当前是否编译(我不确定这是否合法),您都应该将迭代变量更改为与绑定属性不同的名称:

<apex:repeat value="{!woli}" var="woli">


您可能希望将控制器属性设置为类似于
wollist
的形式以澄清问题。

非常感谢David!我在构造函数中两次声明变量肯定是个业余错误。我做了您建议的更改,出现了一个新错误:)。我想学习一门新语言的乐趣。
<apex:repeat value="{!woli}" var="woli">