Memos About Salesforce

Salesforceにハマってたこと!

Salesforce クエリ 選択リストのラベル取得

Salesforceのクエリについて

ここに来た方が詳しいと思います。

クエリとはのような話はしません

今回、共有したいものが

選択リスト項目のクエリです

選択リスト項目にはラベルとAPIの設定があり

それぞれ、きちんと設定する場合に

画面上にはAPI名が表示されてしまう。

きちんと設定しないと、コード側にまたなにかが起きりやすい

目次

選択リストのクエリ

選択リスト項目の

  • ラベルは日本語

  • API名は英文字

にした場合を例にします

サンプル設定

  • オブジェクト名:テストオブジェクト
  • オブジェクトAPI参照名:TestObject__c
  • 対象テスト項目名:区分
  • 対象テスト項目API参照名:TestPickUpList__c

対象テスト項目の詳細設定は下記になります

No. API参照名
1 標準 Standard
2 カスタマイズ Customize
通常のクエリ

APEX側

List<TestObject__c> testList = [SELECT Id, TestPickUpList__c FROM TestObject__c LIMIT 10];

上記のtestListをPublicクラスのプロパティーとする

VF側で表示すると

<apex:outputText value="{!testList[0].TestPickUpList__c}" />

結果が「Standard」か「Customize」になるわけ、もちろん、どっちになるか、レコードの項目の値次第が

絶対API参照名になるのが間違いない

API参照名を避けて、選択リストの値を表示させるには下記の例で対応可能

選択リストのラベルのクエリ

APEX側

    List<TestObject__c> testList = [SELECT Id, toLabel(TestPickUpList__c) FROM TestObject__c LIMIT 10];

上記のtestListをPublicクラスのプロパティーとする

VF側で表示すると

    <apex:outputText value="{!testList[0].TestPickUpList__c}" />

重要なのは、クエリで対象項目のAPI参照名にtoLableでラッパーすること

VF側では、通常通りに使えば、選択リストの値が表示される

まとめ

  • クエリの注意点として
SELECT Id, TestPickUpList__c, toLabel(TestPickUpList__c) FROM TestObject__c LIMIT 10

TestPickUpListcとtoLabel(TestPickUpListc)が同時できません、する必要もない

  • 選択リストのラベルとAPI名をきちんと管理する