Salesforce Visualforce:如何从单个表创建多个对象

Salesforce Visualforce:如何从单个表创建多个对象,salesforce,apex-code,visualforce,Salesforce,Apex Code,Visualforce,我有两个自定义对象:“包”和“订单”“订单”包括“包装”字段和一些其他字段。我需要为一个表中的几个“订单”实例指定不同的字段值。”在表(ID=null)中呈现时,“订单”对象不存储在数据库中,它与“包”对象的关系是只读的。问题是如何将所有输入的数据绑定到适当的“订单”对象 我有以下的视觉力量来源。也许我应该添加一些隐藏字段来指定订单和特定包之间的关系,但我不知道如何正确地操作 {!product.Package\ r.name} 另请参见我的控制器片段: 公共类OrdersControlle

我有两个自定义对象:“包”和“订单”“订单”包括“包装”字段和一些其他字段。我需要为一个表中的几个“订单”实例指定不同的字段值。”在表(ID=null)中呈现时,“订单”对象不存储在数据库中,它与“包”对象的关系是只读的。问题是如何将所有输入的数据绑定到适当的“订单”对象

我有以下的视觉力量来源。也许我应该添加一些隐藏字段来指定订单和特定包之间的关系,但我不知道如何正确地操作


{!product.Package\ r.name}
另请参见我的控制器片段:

公共类OrdersController{
公共字符串X12NC{get;set;}
公共字符串productType{get;set;}
公共列表顺序=新列表();
公共集合有序{get;Set;}
公共整数orderedNumber{get{return ordered.size();}
公共秩序控制器(){
调试(Logginglevel.INFO,“启动构造函数”);
this.X12NC=ApexPages.currentPage().getParameters().get('X12NC');
this.productType=ApexPages.currentPage().getParameters().get('productType');
this.ordered=新集合();
调试(Logginglevel.INFO,'productType='+this.productType);
调试(Logginglevel.INFO,'x12nc='+this.x12nc);
}    
公共ApexPages.StandardSetController连接{
获取{
如果(conn==null){
调试(Logginglevel.INFO,“创建新连接!”);
字符串pType=this.productType==null?'%':'%'+this.productType+'%';
字符串x12nc=this.x12nc==null?'%':'%'+this.x12nc+'%';
调试(Logginglevel.INFO,'pType='+pType);
调试(Logginglevel.INFO,'x12nc='+x12nc);
conn=新ApexPages.StandardSetController(Database.getQueryLocator([
选择名称、最大值X12NC、最大值产品描述、最大值预期、最大值库存、最大值产品状态、最大值数量
其中max_uux12nc_uuuc类似于:X12NC
名称是:pType
限额2000
]));
连接设置页面大小(20);
}
返回连接;
}
设置
}
//初始化setCon并返回记录列表
公共列表产品(){
调试(Logginglevel.INFO,“getProducts()调用”);
命令。清除();
对于(最大封装pckg:(列表)连接getRecords()){
最大订单量=新的最大订单量(最大包装量=千克);
订单。添加(订单);
}
退货订单;
}
公共页面引用搜索(){
调试(Logginglevel.INFO,“调用搜索方法!”);
this.ordered.clear();
this.conn=null;
返回null;
}
公共页面引用makeOrder(){
调试(Logginglevel.INFO,“下订单”);
用于(最大订单数量:订单数量){
系统调试(Logginglevel.INFO,'检查顺序='+顺序);
如果(order.amount\uuuu c!=null&&order.amount\uu c>0){
调试(Logginglevel.INFO,'Add'+order+'to shopping cart');
调试(Logginglevel.INFO,'Order package='+Order.package_u__c);
已订购。添加(订单);
}
}
System.debug('购物车中添加的对象数:'+ordered.size());
返回null;
}

在处理多个类型的对象时,我不会使用StaleStDead控制器。我会考虑在我自己的类中管理APEX。

澄清,说一个订单只能有一个包是正确的吗?每个页面显示多个订单?1。是的,一个订单包含单一类型的包。2。是的,我想要S。如何在单个页面的单个表中显示所有订单。由于分页功能,StandardSetController非常方便。