当前位置: 首页 > 知识库问答 >
问题:

更新单个Visualforce页面上多个opportunity行项目的数量

许子平
2023-03-14

我有一个visualforce页面,它在线显示在Opportunity页面布局上。目标是显示与opportunity关联的每个opportunity line item(OLI),以及quantity inputfield。我需要能够从VF页面更改奥利的数量。我有一个扩展到标准opportunity controller之外的控制器,所有内容都能正确显示,但当我尝试使用自定义保存方法保存时,页面会刷新,对字段的更改不会更新。感谢您的帮助!

VF页面:

<apex:page standardController="Opportunity" extensions="OLIController">
<apex:form >
<apex:pageBlock title="Opportunity Products">



    <apex:pageBlockTable var="OLI" value="{!OLIs}" id="newProduct">
        <apex:column value="{!OLI.name}"/>
        <apex:column headerValue="Quantity">

            <apex:inputfield id="Quantity" value="{!OLI.Quantity}"/>

        </apex:column>

    </apex:pageBlockTable>

    <apex:pageBlockButtons >
        <apex:commandButton value="Save" action="{!saveIt}" immediate="false"/>
    </apex:pageBlockButtons>

</apex:pageBlock>
</apex:form>

控制器:具有共享类OLIController的公共{

public ApexPages.StandardController sc;
public Opportunity Opp {get;set;}
private Map<Id, OpportunityLineItem> oliItems;
public List<OpportunityLineItem> OLIlist2 {get ;set;}

public OLIController(ApexPages.StandardController sc) { 
this.Opp = (Opportunity)sc.getRecord();

}


public List<OpportunityLineItem> getOLIs() {

    List<OpportunityLineItem> OLIlist2 = [Select Name, ID, Quantity, OpportunityId FROM OpportunityLineItem WHERE OpportunityId =:Opp.Id];

    return OLIlist2;

}
public PageReference saveIt() {
    List<OpportunityLineItem> listOLI = getOLIs();

    update listOLI;

    return null;

}

}

共有1个答案

韶景曜
2023-03-14

问题已解决;

只需将OLIlist2的“get”部分的数据从控制器添加到OLIController sc。请参阅下面的修改代码。

public with sharing class OLIController {

public ApexPages.StandardController sc;
public Opportunity Opp {get;set;}
public List<OpportunityLineItem> OLIlist2 {get ;set;}

public OLIController(ApexPages.StandardController sc) { 
this.Opp = (Opportunity)sc.getRecord();
OLIlist2 = [Select Name, ID, Quantity, OpportunityId FROM OpportunityLineItem WHERE OpportunityId =:Opp.Id];
}


public List<OpportunityLineItem> getOLIs() {

    List<OpportunityLineItem> OLIlist2 = [Select Name, ID, Quantity, OpportunityId FROM OpportunityLineItem WHERE OpportunityId =:Opp.Id];

    return OLIlist2;

}
public PageReference saveIt() {
   // List<OpportunityLineItem> listOLI = getOLIs();

    update OLIlist2;

    return null;

}

}

 类似资料:
  • 问题内容: 我正在使用此 libray将Android中的GoogleMap集群化。我的问题是如何更新我昨天从Google查过的单个项目,没有答案可以解释更新单个项目。我在项目中使用websocket,因此我需要更新从websocket接收到的项目数据。在下面查看我的实现。 我的概念是每当我从websocket接收数据时,就执行mClusterManager.remove(item)mCluste

  • 问题内容: 我有一个待办事项列表,如果用户单击“完成”,希望将数组中该项目的状态设置为“完成”。 这是我的动作: 这是我的减速器: 我遇到的问题是新状态在所选项目上不再具有与该待办事项相关的文本,并且ID不再存在。这是因为我要覆盖状态并忽略以前的属性吗?我的对象项onload看起来像这样: 如您所见,我要做的就是将完成值设置为true。 问题答案: 您需要转换待办事项数组以更新适当的项目。Arra

  • 我正在使用RecyclerView来显示一个项目列表,我需要按位置更新单个项目的状态。我正在更新列表中的项目,然后调用notifyItemChanged(int位置),如下所示: 项目更新成功,但也随机更新了一些其他项目,每次我滚动上下通过我的项目列表,这种更新(不同的图标状态)也在其他项目上。

  • 我有一个表,其中有一个主id列(自动索引)、两个子id列(也已索引)和12列类型geometry(Polygon)。如果我要更新此表上的约200万行,运行约200万条单独的更新语句是否更快 还是像下面的答案那样,执行较少数量的较大更新语句更快 如果是后者,你对什么是好的有什么建议吗?是 = ~2mil,还是一些较小的子集(我会重复直到它们全部完成)? 编辑:显然,在前一种情况下,我会使用准备好的语

  • 一个例子:我有个人模型的显示页面,我想为个人显示页面的注释模型内部添加“添加新注释”选项。

  • 问题内容: 我在一页上有2个表格。其中一种形式具有始终显示的Recaptcha。另一个应仅在某些事件(例如,最大程度地尝试登录)后才显示recaptcha。所以有时候我需要2个Recaptchas才能出现在同一页面上。这可能吗?我知道我可能两者都可以使用一个,但是我有布局的方式,我更喜欢有2个。谢谢。 更新: 嗯,我想这可能是不可能的。有人可以推荐另一个捕获库与reCaptcha一起使用吗?我真的