2014-07-22 1 views
0

주제가라는 픽스리스트가있는 Visualforce 페이지가 있으며 때로는 페이지로드시 선택 목록 옵션 중 하나를 선택해야합니다 (주제가 다른 페이지에서 전달된다는 의미이며 페이지를 처음로드 할 때 선택해야합니다). 어떻게해야할지 모르겠다. 아래의 주제 선택과 컨트롤러 코드를 처리하는 Visualforce 페이지의 일부를 게시하고 있습니다. 어떤 도움이라도 감사 할 것입니다. 감사합니다.로드시 시각력 페이지에서 선택 옵션 선택

없이 VisualForce 페이지 :

<!---------------------------------- Select Topic ----------------------------------------------------->  
        <apex:pageblockSection title="Select the Topic" >  
          <apex:selectList value="{!topic}" size="1"> 
           <apex:outputlabel for="Topic" value="Pick a Topic :" ></apex:outputlabel> &nbsp;&nbsp;&nbsp; 
           <apex:selectOptions id="topic" value="{!Topics}"/> 
            <apex:actionSupport action="{!populateParameters}" reRender="parametersSection,querySection" event="onchange"/> 
          </apex:selectList> 
        </apex:pageblockSection> 
      <!---------------------------------- End of Select Topic ----------------------------> 

      <!---------------------------------- Parameters for Topic ----------------------------------------------------->  
       <apex:pageblockSection id="parametersSection" title="Input Parameters"> 
        <apex:repeat value="{!topicpParamWrapperList}" var="params"> 
         <apex:outputPanel > 
          <apex:outputlabel value="{!params.parameter.Name}" ></apex:outputlabel> &nbsp;&nbsp;&nbsp; 
          <apex:inputfield value="{!params.parameter.inputValue__c}" rendered="{!params.renderAsText}"> 
           <apex:actionsupport action="{!placeValuesInQuery}" reRender="querySection,splunUrlLink" event="onchange"/> 
          </apex:inputfield> 
          <apex:inputfield value="{!params.parameter.DateTimeValueHolder__c}" rendered="{!params.renderAsDate}"> 
           <apex:actionsupport action="{!placeValuesInQuery}" reRender="querySection,splunUrlLink" event="onchange"/> 
          </apex:inputfield> 
         </apex:outputPanel> 
        </apex:repeat> 
       </apex:pageblockSection> 
      <!---------------------------------- End of Parameters for Topic ----------------------------------------------------->  

에이펙스 컨트롤러

public List <topicpParamWrapper> topicpParamWrapperList { 
     get; 
     set; 
    } { 
     topicpParamWrapperList = new List <topicpParamWrapper>(); 
    } 


public void populateParameters() 
{ 
     if(!topicpParamWrapperList.isEmpty()) 
     { 
       topicpParamWrapperList.clear(); 
     } 

     if(topic!='' && topic!=Null) 
     { 
       for(Query_Parameter__c qParam :[select id, Parameters__r.Variable_Name__c, Parameters__r.Type__c,Parameters__r.Name from Query_Parameter__c where Topics__c=:topic]) 
       { 
         Parameters__c param = new Parameters__c(); 
         param.Name =qParam.Parameters__r.Name ; 
         param.type__c = qParam.Parameters__r.type__c; 
         param.Variable_Name__c=qParam.Parameters__r.Variable_Name__c; 
         topicpParamWrapperList.add(new topicpParamWrapper(param)); 
       } 
       getQueryToRun(); 
     } 

} 

public void getqueryToRun(){ 

     if(mapTopics.containsKey(topic)) 
     { 
       this.queryToRun =mapTopics.get(topic).query__c; 
       this.queryMain=mapTopics.get(topic).query__c; 
     } 

} 

public List <topicpParamWrapper> paramList { 
     get; 
     set; 
    } { 
     paramList = new List <topicpParamWrapper>(); 
    } 

답변

0

당신이 정말로해야 할 모든 생성자의 일부 초기 값 (특수 기능에 topic을 설정하는 것입니다 클래스 '이름과 동일한 이름을 가짐). 당신은 그것을 어떤 값으로 설정하고 나서 그것을 visualforce에서 적절히 표현할 것입니다 (같은 값이 선택 가능한 옵션 중 하나라고 가정하십시오!).

생성자 또는 <apex:page> 태그를 생략 했으므로 해당 페이지로 어떻게 이동하는지 알 수 없습니다. 하지만 아마 URL에 주제를 전달하는 것이 가장 쉽습니다. 당신은 같은 페이지에 액세스하는 경우 그래서 : 생성자에서 다음

/apex/MyPage?topic=Something, something 

을 당신이 할 수 있습니다 :

topic = ApexPages.currentPage().getParameters().get('topic'); 

(URL 매개 변수의 이름은 변수 이름과 동일하지 않아도됩니다 그러나 당신의 주제,763를 포함 할 위험이있는 경우이를 적어도)와 유사한

당신은 더 약 getParameters()

를 읽을 수 있습니다하는 것이 합리적이다, 공백 등 당신은 아마 URLENCODE 링크를 구축해야합니다.

관련 문제