salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)...
本篇引用以下三個鏈接:
http://www.tgerm.com/2012/01/recordtype-specific-picklist-values.html?m=1
https://github.com/abhinavguptas/Multi-RecordType-Sobject-Picklist-Describer
http://bobbuzzard.blogspot.com/2012/01/record-type-picklist-values.html
我們知道,record type可以設置不同的profile針對類型為picklist的字段顯示不同的values,但是apex的API中,通過schema取出的Picklist的values為全部的值,并不能直接通過指定的方法取出指定的values。通過上述三個鏈接可以很好的解決。
原理圖如下:
用法:
1.通過Record ID獲取其對應的record type name 以及類型為picklist的field values。
2.通過sObjectType,Record Type Name以及field Name 獲取類型為picklist的field values。
其實,每個customer object都會有一個recordtype字段,用來記錄當前的record的record type id。所以如果僅僅想在頁面上通過record id獲取當前record 具有的field 的picklist values,只需要用<apex:inputField>來盛裝此字段即可.inputField可以根據字段的類型顯示不同的樣式。
PicklistController:通過URL傳遞的不同參數進行不同的處理,點擊按鈕后顯示所選的項的value
public with sharing class PicklistController {public Goods__c goods {get;set;}public String pickListFieldName {get;set;} public PicklistController() {Map<String, String> req = ApexPages.currentPage().getParameters();PageReference ref = ApexPages.currentPage();//設置當前的頁面開發模式開啟//ref.getParameters().put('core.apexpages.devmode.url', '1');String goodsId = req.get('id');this.pickListFieldName = req.get('picklistFieldName'); String recordTypeId = req.get('recordTypeId');goods = new Goods__c();if(goodsId != null) {goods = [SELECT GoodsBrand__c, RecordTypeId FROM Goods__c where Id=:goodsId limit 1];}if(goods.RecordTypeId == null) {goods.put('RecordTypeId', recordTypeId);}}public void showSelectedValue() {ApexPages.addMessage(new ApexPages.Message(ApexPages.SEVERITY.INFO,goods.GoodsBrand__c));} }?PickListDemoPage:顯示相關record type對應的picklist items以及button顯示所選擇的picklist的value值
<apex:page controller="PicklistController"showHeader="false" sidebar="false" ><apex:form ><apex:pageMessages /><apex:inputField value="{!goods[pickListFieldName]}"/><apex:commandButton action="{!showSelectedValue}" value="顯示所選值"/></apex:form></apex:page>效果:
1.通過record id獲取此record的record type應該具有的picklist values
2.通過record type id獲取相關字段應該具有的picklist values
總結:如果需要在apex中獲取相關的picklist values然后進行相關后續處理可以參看上方引用的鏈接以及源碼,如果只是想要頁面中顯示相關使用record type的picklist values,則可以對相關object配置相關的record type id,前臺使用apex:inputField即可。篇中有錯誤歡迎指出,有問題歡迎留言。
?
?
轉載于:https://www.cnblogs.com/zero-zyq/p/6251173.html
總結
以上是生活随笔為你收集整理的salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type)...的全部內容,希望文章能夠幫你解決所遇到的問題。