gpt4 book ai didi

salesforce - Visualforce 中继器

转载 作者:行者123 更新时间:2023-12-03 20:54:24 26 4
gpt4 key购买 nike

嗨,我对 visualforce 中继器控件感到头疼:

 <apex:repeat value="{!productDetails}" var="o">
<apex:pageBlockSectionItem >
<apex:outputText style="label" value="Name:"></apex:outputText>
<apex:outputLabel value="{!o.name}" />
</apex:pageBlockSectionItem>

<apex:pageBlockSectionItem >
<apex:outputText value="{!o.ProductCode}"/>
<apex:outputText value="{!o.Family}" />
</apex:pageblockSection>

<apex:pageBlockSection>
<apex:outputText style="label" value="Quantity:"> </apex:outputText>
<apex:inputText value="{!theList}"/>
</apex:pageblockSection>
</apex:repeat>

我想做的是,为产品详细信息列表中的每条记录生成一个文本框。此文本框绑定(bind)到另一个字段 (theList.quantity)。但我发现,当我更改最后一个文本框中的值时,它会设置所有文本框中的数量(很明显,因为它们绑定(bind)到同一字段)。

所以我的问题是让转发器中生成的每个文本框都有自己的参数值的最佳方法是什么?

还是我使用中继器的方式不对?

编辑(澄清):

对于每个产品详细记录(我正在迭代的内容),我想要一个文本框,用户可以在其中输入产品数量。此文本框的值与产品详细信息记录无关。

我的问题是如何为文本框的每次迭代生成唯一参数?希望这是有道理的。

干杯

最佳答案

您需要使用 var<apex:repeat>对于 productDetails 中的每个元素列表。例如:

<apex:repeat value="{!productDetails}" var="productDetail">
<apex:pageBlockSection>
<apex:outputText style="label" value="Quantity:"> </apex:outputText>
<apex:inputText value="{!productDetail.quantity}"/>
</apex:pageblockSection>
</apex:repeat>

这将设置 quantity每个属性 productDetail .

如果您真的要遍历 productDetail 的父级在这个例子中,你需要改变你的 Controller 来为每个 Controller 创建一个父级,然后迭代它。我将编写示例代码,就好像您正在遍历潜在订单列表一样。

在您的 Controller 中,您需要为每个产品创建一个订单。我不确定父级是 SObject 还是自定义类,但我会把示例写成自定义类。

public class Order {
public Order(ProductDetail productDetail) {
this.productDetail = productDetail;
}

public ProductDetail productDetail;
public Integer quantity;
}

// I assume you've already implemented this getter or are setting it some other way.
public ProductDetail[] productDetails {
get {
if (productDetails == null) {
productDetails = ...;
}
return productDetails;
}
set;
}

public Order[] orders {
get {
if (orders == null) {
orders = new Order[]{};
for (ProductDetail productDetail: productDetails) {
orders.add(new Order(productDetail);
}
}
return orders;
}
set;
}

现在,在您的 VisualForce 页面中,您可以迭代 Order列出并让用户设置数量。

<apex:repeat value="{!orders}" var="order">
...
<apex:outputtext style="label" value="Name:"></apex:outputText>
<apex:outputLabel value="{!order.productDetail.name}" />
...
<apex:inputText value="{!order.quantity}"/>
....
</apex:repeat>

回到你的 Controller ,只保存orders有一个 quantity大于零(或您想到的任何其他标准)。

关于salesforce - Visualforce 中继器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9592009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com