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

Rit*_*tta 2 salesforce soql apex-code

在我的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()));

}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何显示该字段的值为例如我有对象实例

Campaign c;
Run Code Online (Sandbox Code Playgroud)

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

String fieldName;
Run Code Online (Sandbox Code Playgroud)

并使用多个if

if(fieldName=='Name')
c.Name=
if(fieldName=='Id')
c.Id=
Run Code Online (Sandbox Code Playgroud)

还有其他方便的方法吗?请说明!!

eye*_*eam 10

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

Object o = c.get(fieldName);
String returnValue = String.valueOf(o);
Run Code Online (Sandbox Code Playgroud)

有关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方法来学习实际的字段类型...