0

トピックと呼ばれる選択リストを持つ visualforce ページがあり、ページの読み込み時に選択リスト オプションの 1 つを選択する必要がある場合があります (つまり、トピックは別のページから渡され、最初のページの読み込み時に選択する必要があります)。時間)。これを行う方法がわかりませんか?トピックの選択を処理する Visualforce ページの一部と、以下のコントローラー コードを投稿します。どんな助けでも大歓迎です.Thanks.

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>();
   }
4

1 に答える 1

0

実際に行う必要があるtopicのは、コンストラクター (クラスの名前と同じ名前を持つ特別な関数) で初期値を設定することだけです。これを何らかの値に設定すると、それが visualforce で適切にレンダリングされます (同じ値が選択可能なオプションの 1 つと仮定します!)。

コンストラクターまたはタグが省略されている<apex:page>ため、そのページに移動する方法がわかりません。しかし、おそらく最も簡単なのは、URL でトピックを渡すことでしょう。したがって、次のようにページにアクセスすると:

/apex/MyPage?topic=Something, something

次に、コンストラクターでこれを行うことができます:

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

(URL パラメーターの名前は、変数名と同じである必要はありませんが、少なくとも類似していることが理にかなっています)

あなたはについてもっと読むことができますgetParameters()

トピックに & やスペースなどが含まれるリスクがある場合は、リンクを作成するときにURLENCODEを行う必要があります。

于 2014-07-24T08:33:58.103 に答える