// Schema.DescribeFieldResult F = Account.hogehoge__c.getDescribe() の 呼び出しは10回までです。
Schema.DescribeFieldResult F = Account.hogehoge__c.getDescribe();
List<Schema.PicklistEntry> P = F.getPicklistValues();
for (PicklistEntry i : p){
System.debug(i);
}
以下はレコードタイプ
Schema.DescribeSObjectResult R = Account.SObjectType.getDescribe();
List<Schema.RecordTypeInfo> RT = R.getRecordTypeInfos();
for (RecordTypeInfo i : RT){
System.debug(i);
}
DescribeFieldResult・DescribeSObjectResultの詳細はリファレンス見たほうがはやい
2013/12/05 追記
用途として、VFページでの選択リストの生成があげられると思います。
VFページでの検索条件に選択リストを作成するパターンとしては、
1.検索条件用のエンティティを利用する(inputFiled)
2.自前で作成
3.2.で作成する際にDescribeを併用する
1のメリットはメンテが不要になりますが、柔軟な指定ができません。
2.はリスト値追加時にメンテが必要になります(Apexなのでデプロイする必要がある)
3.はメンテが不要で、柔軟にもなります。
ということで、私がよく使うコードを紹介。
// 定義するとこ
// 取引先.業種
public String sIndustry {get;set;}
public List
get {
List
wSL.add(new SelectOption('none','--指定しない--'));
wSL.add(new SelectOption('','*未入力'));
for (Schema.PicklistEntry pe : Account.sIndustry.getDescribe().getPicklistValues()) {
wSL.add(new SelectOption(pe.getValue(), pe.getLabel()));
}
return wSL;
}
set;
}
//検索条件を生成する箇所
String str = '';
if (!'none'.equals(sIndustry)) {
if (sIndustry == null) {
str = str + ' AND Industry = \'\'';
} else {
str = str + ' AND Industry = \'' + sIndustry + '\'';
}
}
これで、条件にしないパターン、値がないパターン、それぞれのパターンを網羅できます。
複数選択はまた別の機会に。
0 件のコメント:
コメントを投稿