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;

今、名前が文字列形式のフィールドの値を取得する必要があります.そのフィールドに対応する値を取得する方法.1つの解決策は、言うように書くだけです

String fieldName;

複数のifを使用する

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

他に便利な方法はありますか??説明してください!!

4

1 に答える 1

10

「動的頂点」について読む必要があります。すべての「具体的な」sObject (取引先、連絡先、カスタム オブジェクトなど) は、汎用 sObject にキャストできます (またはメソッドを直接使用できます)。

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

Salesforce専用サイトの動的getおよびメソッドに関するいくつかの有用な例があります。 4193/update-a-records-using-generic-fields (2 番目の質問はもう少し高度です)set

いつ文字列として返すか、数値として返すとき、日付として返すときは、どうにかして決定する必要があります...実験して、簡単なマッピングを行うか、describeメソッドを使用して実際のフィールドタイプを学習してください...

于 2013-02-27T15:02:11.713 に答える