在apex salesforce中按名称获取字段的值

时间:2013-02-27 14:30:36

标签: salesforce apex-code soql

在我的visualforce页面中我有一些广告系列对象首先用户选择一个对象,然后有一个多选项列表。在此选项列表中有用于选择某些字段的所有字段的标签,然后我必须在所选的广告系列对象中显示这些字段的值 显示多个选项列表我的apex功能是

 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;

现在我必须得到Name为字符串form.how的任何字段的值,以获得该字段的相应值。一个解决方案只是写得像 说

String fieldName;

并使用if if

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

有没有其他方便的方法?请解释!!

1 个答案:

答案 0 :(得分:9)

您需要了解“动态顶点”。每个“具体”sObject(如Account,Contact,自定义对象)都可以转换为通用sObject(或者您可以直接使用methods)。

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

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

你仍然需要以某种方式决定何时将其作为字符串返回,当作为数字时,何时作为日期...只是试验它并做一些简单的映射或使用describe方法来学习实际的字段类型..

相关问题