我有一个自定义对象(零件订单),用于创建零件订单。每个订单项都有3个字段(部件类型,数量和部件号),每个部件订单最多可包含10个订单项。我似乎无法找到实现这一目标的好方法。我想一种方法是创建30个单独的字段,但我不禁觉得必须有更好的方法。我可以把3个字段放到一个字段集中,但是有没有办法在页面上输入一组FieldSets?如果还有其他建议,我将不胜感激。
答案 0 :(得分:0)
如果你引用'FieldSets',你可以通过循环输出它们在VisualForce中输出:
<apex:repeat value="{!$ObjectType.Object__c.FieldSets.FieldSet1}" var="f">
<apex:outputField value="{!currentObject[f]}" />
<apex:inputField value="{!currentObject[f]}" required="{!f.required}" />
</apex:repeat>
<apex:repeat value="{!$ObjectType.Object__c.FieldSets.FieldSet2}" var="f">
<apex:outputField value="{!currentObject[f]}" />
<apex:inputField value="{!currentObject[f]}" required="{!f.required}" />
</apex:repeat>
<apex:repeat value="{!$ObjectType.Object__c.FieldSets.FieldSet2}" var="f">
<apex:outputField value="{!currentObject[f]}" />
<apex:inputField value="{!currentObject[f]}" required="{!f.required}" />
</apex:repeat>
其中FieldSet1..n
是与页面当前对象类型关联的字段集的名称,Object__c
可以是任何标准或自定义sObject
根据recordtype
或您创建该对象的任何其他条件,您可以混合和匹配“已渲染”但未“渲染”的任何子集。
但是,关于创建第二个对象的注释可能更简洁,只需记住跨多个对象关系的报告有点困难。
如果您使用标准VF页面,也许我建议使用多种记录类型,每种类型都有自己的页面布局。
答案 1 :(得分:0)
由于一个零件订单可能包含许多行项目,您应该创建零件订单行项目对象,该对象是零件订单的子项(就像Opportunity和OpportunityLineItem一样)。
要了解如何创建多重修改页面以便人们可以一次轻松添加/修改多个订单项,您应该查看文档中的优秀visualforce list controller example。
答案 2 :(得分:0)
正如grigriforce所说,您需要一个Line Item自定义对象来表示订单与订购商品之间的关系。这种对象称为自定义联结对象。使用自定义联结对象比具有10个查找字段更具可伸缩性;如果你明年需要20行怎么办?您可以非常快速地耗尽查找字段。
当前的force.com工作簿将引导您完全创建这种仓库应用程序。行项目对象在教程2,步骤2中进行了解释。http://www.salesforce.com/us/developer/docs/workbook/index.htm