Salesforce 用sobject填充SelectList
我正在尝试创建一个类,该类将根据传入的URL参数填充multi-selectlist 我有麻烦了。slectlist从不呈现,但是,通过调试器,我可以看到记录被找到,并且应该填充 我错过了什么愚蠢的事吗 视觉力,第页Salesforce 用sobject填充SelectList,salesforce,apex-code,visualforce,force.com,multi-select,Salesforce,Apex Code,Visualforce,Force.com,Multi Select,我正在尝试创建一个类,该类将根据传入的URL参数填充multi-selectlist 我有麻烦了。slectlist从不呈现,但是,通过调试器,我可以看到记录被找到,并且应该填充 我错过了什么愚蠢的事吗 视觉力,第页 <apex:page controller="PopUp"> <apex:form > <apex:selectList value="{!objectType}" multiselect="true"> <ap
<apex:page controller="PopUp">
<apex:form >
<apex:selectList value="{!objectType}" multiselect="true">
<apex:selectOptions value="{!SelectListOptions}"/>
</apex:selectList>
</apex:form>
控制器类:
public with sharing class PopUp {
public sObject objParameter {get;set;}
public string fldParameter {get;set;}
public string queryType {get;set;}
public static string objName{get;set;}
public list<SelectOption> selectListOptions {get;set;}
public static list<string> TEST {get;set;}
public String[] objectType= new String[]{};
public PopUp(){
objName = ApexPages.currentPage().getParameters().get('obj');
sObject dynObject = Schema.getGlobalDescribe().get(objName).newSObject() ;
objParameter = dynObject;
fldParameter = ApexPages.currentPage().getParameters().get('fld');
String queryType = ApexPages.currentPage().getParameters().get('qt');
system.debug('***objParameter: ' + objParameter);
system.debug('***fldParameter: ' + fldParameter);
//List<selectOption> L = getPicklistValues(objParameter, fldParameter, queryType);
}
public static list<SelectOption> getPicklistValues(SObject obj, String fld, String queryType)
{
list<SelectOption> options = new list<SelectOption>();
if(queryType == 'soql'){
string query = 'select ' + fld + ' from ' + objName;
system.debug('***query: ' + query);
List<sObject> dynList = Database.query(query);
system.debug('***dynList: ' + dynList);
for(integer i=0;i< dynList.size();i++){
string fldValue = string.valueof(dynList[i].get(fld));
system.debug('***fldValue: ' + fldValue);
options.add(new SelectOption(fldValue,fldValue));
TEST.add(fldValue);
}
}
system.debug('***options: ' + options);
return options;
}
public List<selectOption> getSelectListOptions() {
return getPicklistValues(objParameter, fldParameter, queryType);
}
public String[] getObjectType()
{
return objectType;
}
public void setObjectType(String[] objectType)
{
this.objectType= objectType;
}
public与共享类弹出窗口{
公共sObject对象参数{get;set;}
公共字符串fldParameter{get;set;}
公共字符串查询类型{get;set;}
公共静态字符串objName{get;set;}
公共列表selectListOptions{get;set;}
公共静态列表测试{get;set;}
公共字符串[]对象类型=新字符串[]{};
公共弹出窗口(){
objName=ApexPages.currentPage().getParameters().get('obj');
sObject dynObject=Schema.getglobaldescripe().get(objName.newobject();
对象参数=动态对象;
fldParameter=ApexPages.currentPage().getParameters().get('fld');
字符串queryType=ApexPages.currentPage().getParameters().get('qt');
系统调试('***OBJ参数:'+OBJ参数);
系统调试('***FLD参数:'+FLD参数);
//列表L=getPicklistValues(objParameter、fldParameter、queryType);
}
公共静态列表getPicklistValues(SObject对象、字符串fld、字符串queryType)
{
列表选项=新列表();
if(queryType=='soql'){
字符串查询='从'+objName'中选择'+fld+';
调试('***查询:'+查询);
List dynList=Database.query(查询);
系统调试('***动态列表:'+dynList);
对于(整数i=0;i
我认为,基本上有两个getter方法(一个是您添加的,另一个是您告诉控制器通过在变量声明中指定get;
来创建自己的),这让VF页面很混乱:
事实上,看起来您的页面不应该具有设置此项的权限,因此如果需要,您也可以删除setter
public list<SelectOption> selectListOptions {get;set;}
public List<selectOption> getSelectListOptions() {
return getPicklistValues(objParameter, fldParameter, queryType);
}
public List<SelectOption> selectListOptions {set;}