在我的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=
有没有其他方便的方法?请解释!!
答案 0 :(得分:9)
您需要了解“动态顶点”。每个“具体”sObject(如Account,Contact,自定义对象)都可以转换为通用sObject(或者您可以直接使用methods)。
Object o = c.get(fieldName);
String returnValue = String.valueOf(o);
Salesforce专用网站上的动态get
和set
方法有一些有用的示例:https://salesforce.stackexchange.com/questions/8325/retrieving-value-using-dynamic-soql https://salesforce.stackexchange.com/questions/4193/update-a-records-using-generic-fields(第二个问题更高级)
你仍然需要以某种方式决定何时将其作为字符串返回,当作为数字时,何时作为日期...只是试验它并做一些简单的映射或使用describe方法来学习实际的字段类型..