2

在我的 visualforce 页面中,我有一些活动对象,首先用户选择一个对象,然后有一个多选项列表。在这个选项列表中,所有字段都有标签,用户选择一些字段然后我必须在所选活动对象中显示这些字段的值以显示多个选项列表我的顶点功能是

 public List<SelectOption> getOptionalFields(){


   Map <String, Schema.SObjectField> fieldMap= Campaign.sObjectType.getDescribe().fields.getMap();
       List<SelectOption> fieldsName =new List<SelectOption>();

   for(Schema.SObjectField sfield : fieldMap.Values())
{
schema.describefieldresult dfield = sfield.getDescribe();
fieldsName.add(new SelectOption(dfield.getName(),dfield.getLabel()));

}

但我不知道如何显示该字段的值,例如我有像这样的对象实例

Campaign c;

现在我必须获取名称为字符串形式的任何字段的值。如何为该字段获取相应的值。一个解决方案就是这样写

String fieldName;

并使用多个 if

if(fieldName=='Name')
c.Name=
if(fieldName=='Id')
c.Id=

还有其他方便的方法吗?请解释一下!!

4

1 回答 1

10

您需要阅读“动态顶点”。每个“具体”sObject(如 Account、Contact、自定义对象)都可以转换为通用 sObject(或者您可以直接使用这些方法)。

Object o = c.get(fieldName);
String returnValue = String.valueOf(o);

在 Salesforce 专用站点上有一些关于动态get和方法的有用示例: https ://salesforce.stackexchange.com/questions/8325/retrieving-value-using-dynamic-soql https://salesforce.stackexchange.com/questions/ 4193/update-a-records-using-generic-fields(第二个问题更高级一些)set

您仍然需要以某种方式决定何时将其返回为字符串、何时返回为数字、何时返回...只需尝试一下,然后进行一些简单的映射或使用描述方法来了解实际的字段类型...

于 2013-02-27T15:02:11.713 回答