Salesforceのクエリについて
ここに来た方が詳しいと思います。
クエリとはのような話はしません
今回、共有したいものが
選択リスト項目のクエリです
選択リスト項目にはラベルとAPIの設定があり
それぞれ、きちんと設定する場合に
画面上にはAPI名が表示されてしまう。
きちんと設定しないと、コード側にまたなにかが起きりやすい
目次
選択リストのクエリ
選択リスト項目の
ラベルは日本語
API名は英文字
にした場合を例にします
サンプル設定
対象テスト項目の詳細設定は下記になります
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名をきちんと管理する