はじめに
前回の続きです。
作ったもの
項目 | 内容 |
---|---|
Queryable Only | 「Queryable」 のオブジェクトで絞る |
CustomObject Only | カスタムオブジェクトで絞る |
Object Name | オブジェクトの名前 or ラベル名 で絞る |
Prefix | オブジェクトのPrefix で絞る |
Reload ボタン | 条件で絞り、その結果をプルダウンに表示 |
オブジェクト一覧 | 条件で絞った結果のオブジェクトの一覧。名前、ラベル名、Prefixが表示されます |
決定 | オブジェクト一覧で指定したオブジェクトで内容を表示します |
件数 | 条件で絞った件数 |
ソースコード
- ソースコードを公開しますが、ご自身の判断・責任でご利用ください。
- クラス名などは、適宜変更してください。
YGG_ObjectItemViewer.cls (Apexクラス)
public with sharing class YGG_ObjectItemViewer {
public String ValuePicked {get; set;}
public String Prefix {get; set;}
public String Label {get; set;}
public String Name {get; set;}
public Boolean IsAccessible {get; set;}
public Boolean IsCreateable {get; set;}
public Boolean IsCustom {get; set;}
public Boolean IsCustomSetting {get; set;}
public Boolean IsDeletable {get; set;}
public Boolean IsQueryable {get; set;}
public Boolean IsSearchable {get; set;}
public Boolean IsUndeletable {get; set;}
public Boolean IsUpdateable {get; set;}
public List<YGG_ObjectItem> ObjectItemList {get; set;}
public Boolean IsQueryableOnly {get; set;}
public Boolean IsCustomObjectOnly {get; set;}
public String ObjectName {get; set;}
public String PrefixString {get; set;}
public String DebugMessage {get; set;}
private List<SelectOption> listOptions;
public YGG_ObjectItemViewer() {
this.ValuePicked = '';
this.ObjectName = '';
this.PrefixString = '';
this.IsQueryableOnly = false;
this.IsCustomObjectOnly = false;
this.objectItemList = new List<YGG_ObjectItem>();
initializeCustomPickList();
this.DebugMessage = '';
}
public void execute() {
try {
if (this.ValuePicked != null && this.ValuePicked.length() != 0) {
this.ObjectItemList = new List<YGG_ObjectItem>();
Map<String, sObjectType> sObjectTypeMap = Schema.getGlobalDescribe();
sObjectType sObjectType = sObjectTypeMap.get(this.ValuePicked);
DescribeSObjectResult sObjectDescribe = sObjectType.getDescribe();
this.Prefix = sObjectDescribe.getKeyPrefix();
this.Label = sObjectDescribe.getLabel();
this.Name = sObjectDescribe.getName();
this.IsAccessible = sObjectDescribe.isAccessible();
this.IsCreateable = sObjectDescribe.isCreateable();
this.IsCustom = sObjectDescribe.isCustom();
this.IsCustomSetting = sObjectDescribe.isCustomSetting();
this.IsDeletable = sObjectDescribe.isDeletable();
this.IsQueryable = sObjectDescribe.isQueryable();
this.IsSearchable = sObjectDescribe.isSearchable();
this.IsUndeletable = sObjectDescribe.isUndeletable();
this.IsUpdateable = sObjectDescribe.isUpdateable();
Map<String, SObjectField> fields = sObjectDescribe.fields.getMap();
for (String key : fields.keySet()) {
DescribeFieldResult field = fields.get(key).getDescribe();
YGG_ObjectItem item = new YGG_ObjectItem();
item.ByteLength = field.getByteLength();
item.CalculatedFormula = field.getCalculatedFormula();
item.DefaultValue = field.getDefaultValue();
item.DefaultValueFormula = field.getDefaultValueFormula();
item.Digits = field.getDigits();
item.InlineHelpText = field.getInlineHelpText();
item.Label = field.getLabel();
item.Length = field.getLength();
item.LocalName = field.getLocalName();
item.Name = field.getName();
item.Precion = field.getPrecision();
item.ReferenceTarField = field.getReferenceTargetField();
item.RelationshipName = field.getRelationshipName();
item.RelationshipOrder = field.getRelationshipOrder();
item.Scale = field.getScale();
item.Type = '' + field.getType();
item.Accessible = field.isAccessible();
item.AiPredictionField = field.isAiPredictionField();
item.AutoNumber = field.isAutoNumber();
item.Calculated = field.isCalculated();
item.CascadeDelete = field.isCascadeDelete();
item.CaseSensitive = field.isCaseSensitive();
item.Createable = field.isCreateable();
item.Custom = field.isCustom();
item.DefaultedOnCreate = field.isDefaultedOnCreate();
item.DependentPicklt = field.isDependentPicklist();
item.DeprecatedAndHidden = field.isDeprecatedAndHidden();
item.ExternalID = field.isExternalID();
item.Filterable = field.isFilterable();
item.FormulaTreatNullNumberAsZero = field.isFormulaTreatNullNumberAsZero();
item.Groupable = field.isGroupable();
item.HtmlFormatted = field.isHtmlFormatted();
item.IdLookup = field.isIdLookup();
item.NameField = field.isNameField();
item.NamePointing = field.isNamePointing();
item.Nillable = field.isNillable();
item.Permsionable = field.isPermissionable();
item.RestrictedDelete = field.isRestrictedDelete();
item.RestrictedPicklt = field.isRestrictedPicklist();
item.SearchPrefilterable = field.isSearchPrefilterable();
item.Sortable = field.isSortable();
item.Unique = field.isUnique();
item.Updateable = field.isUpdateable();
item.WriteRequiresMasterRead = field.isWriteRequiresMasterRead();
List <sObjectType> parentObjectList = field.getReferenceTo();
item.ParentObjectName = '';
if (parentObjectList != null) {
for (sObjectType parentObject : parentObjectList) {
item.ParentObjectName += parentObject.getDescribe().getName() + ' (' + parentObject.getDescribe().getLabel() + '), ';
}
}
this.ObjectItemList.add(item);
}
}
} catch (Exception e) {
this.DebugMessage = e + '';
}
}
public void reloadPickList() {
initializeCustomPickList();
this.ObjectItemList = new List<YGG_ObjectItem>();
}
public Integer customPickListSize {
get {
return this.listOptions.size();
}
}
public List<SelectOption> customPickList {
get {
return this.listOptions;
}
}
private void initializeCustomPickList() {
try {
this.listOptions = new List<SelectOption>();
Map<String, sObjectType> sObjectTypeMap = Schema.getGlobalDescribe();
for (String key : sObjectTypeMap.keySet()) {
sObjectType sObjectType = sObjectTypeMap.get(key);
DescribeSObjectResult sObjectDescribe = sObjectType.getDescribe();
List<YGG_ConditionData> conditionDataList = new List<YGG_ConditionData>();
conditionDataList.add(new YGG_ConditionData4BooleanImpl(this.IsQueryableOnly, sObjectDescribe.isQueryable()));
conditionDataList.add(new YGG_ConditionData4BooleanImpl(this.IsCustomObjectOnly, sObjectDescribe.isCustom()));
conditionDataList.add(new YGG_ConditionData4StringStartsWithImpl(this.PrefixString, sObjectDescribe.getKeyPrefix()));
List<String> dataList = new List<String>();
dataList.add(sObjectDescribe.getName());
dataList.add(sObjectDescribe.getLabel());
conditionDataList.add(new YGG_ConditionData4StringIncludingORImpl(this.ObjectName, dataList));
Boolean addFlag = conditionCheck(conditionDataList);
if (addFlag == true) {
String prefix = sObjectDescribe.getKeyPrefix();
String label = sObjectDescribe.getName() + ' (' + sObjectDescribe.getLabel();
if (prefix != null) {
label += ' [' + prefix + ']';
}
label += ')';
this.listOptions.add(new SelectOption(key, label));
}
// 追加した結果、Listに入れることのできる最大になったら、breakする。
if (this.listOptions.size() >= 1000) {
break;
}
}
this.listOptions.sort();
} catch (Exception e) {
this.DebugMessage = e + '';
}
}
private Boolean conditionCheck(List<YGG_ConditionData> conditionDataList) {
Boolean result = true;
for (YGG_ConditionData data : conditionDataList) {
Boolean target = data.isTarget();
if (target != null && target == false) {
result = false;
}
}
return result;
}
interface YGG_ConditionData {
Boolean isTarget();
}
class YGG_ConditionData4BooleanImpl implements YGG_ConditionData {
private Boolean Condition;
private Boolean Data;
public YGG_ConditionData4BooleanImpl(Boolean condition, Boolean data) {
this.Condition = condition;
this.Data = data;
}
public Boolean isTarget() {
if (this.Condition == null || this.Condition == false) {
return null;
}
if (this.Data == null) {
return false;
}
return (this.Condition == true && this.Data == true);
}
}
class YGG_ConditionData4StringEqualsImpl implements YGG_ConditionData {
private String Condition;
private String Data;
public YGG_ConditionData4StringEqualsImpl(String condition, String data) {
this.Condition = condition;
this.Data = data;
}
public Boolean isTarget() {
if (this.Condition == null || this.Condition.length() == 0) {
return null;
}
if (this.Data == null) {
return false;
}
return this.Condition.equals(this.data);
}
}
class YGG_ConditionData4StringStartsWithImpl implements YGG_ConditionData {
private String Condition;
private String Data;
public YGG_ConditionData4StringStartsWithImpl(String condition, String data) {
this.Condition = condition;
this.Data = data;
}
public Boolean isTarget() {
if (this.condition == null || this.Condition.length() == 0) {
return null;
}
if (this.Data == null) {
return false;
}
return this.Data.startsWith(this.Condition);
}
}
class YGG_ConditionData4StringIncludingImpl implements YGG_ConditionData {
private String Condition;
private String Data;
public YGG_ConditionData4StringIncludingImpl(String condition, String data) {
this.Condition = condition;
this.Data = data;
}
public Boolean isTarget() {
if (this.Condition == null || this.Condition.length() == 0) {
return null;
}
if (this.Data == null) {
return false;
}
return this.Data.indexOf(this.Condition) >= 0;
}
}
class YGG_ConditionData4StringIncludingORImpl implements YGG_ConditionData {
private String Condition;
private List<String> Datas;
public YGG_ConditionData4StringIncludingORImpl(String condition, List<String> datas) {
this.condition = condition;
this.Datas = datas;
}
public Boolean isTarget() {
if (this.Condition == null || this.Condition.length() == 0) {
return null;
}
if (this.Datas == null) {
return false;
}
for (String data : this.Datas) {
if (data.indexOf(this.condition) >= 0) {
return true;
}
}
return false;
}
}
class YGG_ObjectItem {
public Integer ByteLength {get; set;}
public String CalculatedFormula {get; set;}
public Object DefaultValue {get; set;}
public String DefaultValueFormula {get; set;}
public Integer Digits {get; set;}
public String InlineHelpText {get; set;}
public String Label {get; set;}
public Integer Length {get; set;}
public String LocalName {get; set;}
public String Name {get; set;}
public Integer Precion {get; set;}
public String ReferenceTarField {get; set;}
public String RelationshipName {get; set;}
public Integer RelationshipOrder {get; set;}
public Integer Scale {get; set;}
public String Type {get; set;}
public Boolean Accessible {get; set;}
public Boolean AiPredictionField {get; set;}
public Boolean AutoNumber {get; set;}
public Boolean Calculated {get; set;}
public Boolean CascadeDelete {get; set;}
public Boolean CaseSensitive {get; set;}
public Boolean Createable {get; set;}
public Boolean Custom {get; set;}
public Boolean DefaultedOnCreate {get; set;}
public Boolean DependentPicklt {get; set;}
public Boolean DeprecatedAndHidden {get; set;}
public Boolean ExternalID {get; set;}
public Boolean Filterable {get; set;}
public Boolean FormulaTreatNullNumberAsZero {get; set;}
public Boolean Groupable {get; set;}
public Boolean HtmlFormatted {get; set;}
public Boolean IdLookup {get; set;}
public Boolean NameField {get; set;}
public Boolean NamePointing {get; set;}
public Boolean Nillable {get; set;}
public Boolean Permsionable {get; set;}
public Boolean RestrictedDelete {get; set;}
public Boolean RestrictedPicklt {get; set;}
public Boolean SearchPrefilterable {get; set;}
public Boolean Sortable {get; set;}
public Boolean Unique {get; set;}
public Boolean Updateable {get; set;}
public Boolean WriteRequiresMasterRead {get; set;}
public String ParentObjectName {get; set;}
}
}
YGG_ObjectItemViewer.page (Visualforceページ)
<apex:page controller="YGG_ObjectItemViewer">
<style>
.def {font-family:'メイリオ', 'Meiryo'; font-size:12px;}
.odd {background-color: #FFFFFF;}
.even {background-color: #DDFFFF;}
table.gorgeous {
/*width: 100%;*/
border-collapse:separate;
border-spacing: 0;
}
table.gorgeous th:first-child{
border-radius: 5px 0 0 0;
}
table.gorgeous th:last-child{
border-radius: 0 5px 0 0;
border-right: 1px solid #3c6690;
}
table.gorgeous th {
text-align: center;
color:white;
background: linear-gradient(#829ebc,#225588);
border-left: 1px solid #3c6690;
border-top: 1px solid #3c6690;
border-bottom: 1px solid #3c6690;
box-shadow: 0px 1px 1px rgba(255,255,255,0.3) inset;
width: 25%;
padding: 10px 0;
font-family:'メイリオ', 'Meiryo'; font-size:12px;
}
table.gorgeous td {
text-align: center;
border-left: 1px solid #a8b7c5;
border-bottom: 1px solid #a8b7c5;
border-top:none;
box-shadow: 0px -3px 5px 1px #eee inset;
width: 25%;
padding: 10px 0;
font-family:'メイリオ', 'Meiryo'; font-size:12px;
}
table.gorgeous td:last-child {
border-right: 1px solid #a8b7c5;
}
table.gorgeous tr:last-child td:first-child {
border-radius: 0 0 0 5px;
}
table.gorgeous tr:last-child td:last-child {
border-radius: 0 0 5px 0;
}
</style>
<apex:form styleClass="def">
<div>
<table border="0">
<tr>
<td class="def">
<apex:inputCheckbox value="{!IsQueryableOnly}"/>Queryable Only
<apex:inputCheckbox value="{!IsCustomObjectOnly}"/>CustomObject Only
</td>
</tr>
<tr>
<td class="def">
Object Name<apex:inputText value="{!ObjectName}" styleClass="def"/>
Prefix<apex:inputText value="{!PrefixString}" styleClass="def"/>
<apex:commandButton value="reload" action="{!reloadPickList}" style="font-family:'メイリオ', 'Meiryo'; font-size:12px;"/>
</td>
</tr>
<tr>
<td>
<apex:selectList value="{!ValuePicked}" size="1" styleClass="def">
<apex:selectOptions value="{!customPickList}"/>
</apex:selectList>
<apex:commandButton value="決定" action="{!execute}" style="font-family:'メイリオ', 'Meiryo'; font-size:12px;"/>
<apex:outputLabel value="{!customPickListSize}" styleClass="def"></apex:outputLabel>
</td>
</tr>
</table>
</div>
<apex:outputpanel rendered="{!IF(ObjectItemList.Size > 0, true, false)}">
<table class="gorgeous">
<tr><th>Category</th><th>value</th></tr>
<tr><td>Prefix</td><td><apex:outputText value="{!Prefix}"/></td></tr>
<tr><td>Label</td><td><apex:outputText value="{!Label}"/></td></tr>
<tr><td>Name</td><td><apex:outputText value="{!Name}"/></td></tr>
<tr><td>IsAccessible</td><td><apex:outputText value="{!IsAccessible}"/></td></tr>
<tr><td>IsCreateable</td><td><apex:outputText value="{!IsCreateable}"/></td></tr>
<tr><td>IsCustom</td><td><apex:outputText value="{!IsCustom}"/></td></tr>
<tr><td>IsCustomSetting</td><td><apex:outputText value="{!IsCustomSetting}"/></td></tr>
<tr><td>IsDeletable</td><td><apex:outputText value="{!IsDeletable}"/></td></tr>
<tr><td>IsQueryable</td><td><apex:outputText value="{!IsQueryable}"/></td></tr>
<tr><td>IsSearchable</td><td><apex:outputText value="{!IsSearchable}"/></td></tr>
<tr><td>IsUndeletable</td><td><apex:outputText value="{!IsUndeletable}"/></td></tr>
<tr><td>IsUpdateable</td><td><apex:outputText value="{!IsUpdateable}"/></td></tr>
</table>
<div> </div>
<apex:dataTable value="{!ObjectItemList}" styleClass="gorgeous" var="row" id="theTable" rowClasses="odd,even">
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Name" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Name}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Label" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Label}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="LocalName" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.LocalName}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Length" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Length}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Type" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Type}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="RelationshipName" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.RelationshipName}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="RelationshipOrder" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.RelationshipOrder}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="ParentObjectName " styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.ParentObjectName}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Custom" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Custom}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Nillable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Nillable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="ByteLength" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.ByteLength}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="CalculatedFormula" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.CalculatedFormula}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="DefaultValue" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.DefaultValue}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="DefaultValueFormula" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.DefaultValueFormula}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Digits" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Digits}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="InlineHelpText" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.InlineHelpText}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Precion" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Precion}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="ReferenceTarField" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.ReferenceTarField}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Scale" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Scale}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Accessible" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Accessible}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="AiPredictionField" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.AiPredictionField}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="AutoNumber" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.AutoNumber}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Calculated" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Calculated}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="CascadeDelete" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.CascadeDelete}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="CaseSensitive" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.CaseSensitive}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Createable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Createable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="DefaultedOnCreate" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.DefaultedOnCreate}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="DependentPicklt" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.DependentPicklt}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="DeprecatedAndHidden" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.DeprecatedAndHidden}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="ExternalID" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.ExternalID}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Filterable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Filterable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="FormulaTreatNullNumberAsZero" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.FormulaTreatNullNumberAsZero}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Groupable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Groupable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="HtmlFormatted" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.HtmlFormatted}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="IdLookup" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.IdLookup}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="NameField" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.NameField}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="NamePointing" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.NamePointing}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Permsionable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Permsionable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="RestrictedDelete" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.RestrictedDelete}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="RestrictedPicklt" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.RestrictedPicklt}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="SearchPrefilterable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.SearchPrefilterable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Sortable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Sortable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Unique" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Unique}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="Updateable" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.Updateable}"/>
</apex:column>
<apex:column styleClass="def">
<apex:facet name="header">
<apex:outputText value="WriteRequiresMasterRead" styleClass="def"/>
</apex:facet>
<apex:outputText value="{!row.WriteRequiresMasterRead}"/>
</apex:column>
</apex:dataTable>
</apex:outputpanel>
<apex:outputText ></apex:outputText>
</apex:form>
</apex:page>
ご了承ください
- まだまだ勉強中の部分もあります。間違っている箇所もあるかもしれません。
- Salesforce は、この時点のバージョン(2022年4月~5月頃) での内容になります。今後、仕様変更が変わることによって、内容の通りにならない可能性もあります。ご了承ください。
- また、URLなども変更になっている可能性もあります。