function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
yuuki_uyuuki_u 

outputPanelのrendered属性について

お世話になっております。

 

Visualforce上で画面の切り替えを行いたいと思っており、outputPanelのrendered属性を

使おうと思っています。

 

【Visualforce】

 

<apex:commandButton reRender="page1,page2" value="検索"/>
    <br/><br/>
    
    <apex:outputPanel id="page1" rendered="{!IF(bool != 0,true,false)}">
    <apex:pageBlock title="1">
       ~省略~
    </apex:pageBlock>
    </apex:outputPanel>
    
    <apex:outputPanel id="page2" rendered="{!IF(bool == 0,true,false)}">
    <apex:pageBlock title="2">
       ~省略~
    </apex:pageBlock>
    </apex:outputPanel>
【コントローラ】
public Integer getBool(){
        Integer num = [select count() from Contract where Name like :'%' + 検索したい文字列+ '%'];
                
        if ( num == 0 ){
            return 0;
        }else{
            return 1;
        }
    }
コントローラの戻り値が0であれば、page2を表示したいと思っており、
1であれば、page1を表示させたいです。
ところが、ボタンを押してもpage2だけしか表示されません。
どのように修正すればいいのかご教授頂けると幸いです。
宜しくお願いいたします。

 

Best Answer chosen by Admin (Salesforce Developers) 
mits430xmits430x

経験上、reRenderされるoutputPanel はrendered属性を指定できないようです。

下記のようにpanelを分けてみては如何でしょうか?

 

 

<apex:commandButton reRender="page1,page2" value="検索"/>
<br/><br/>

<apex:OutputPanel id="page1">
	<apex:OutputPanel rendered="{!IF(bool != 0,true,false)}">
	<apexageBlock title="1">
	   ~省略~
	</apex:PageBlock>
	</apex:OutputPanel>
</apex:OutputPanel>


<apex:OutputPanel id="page2">
	<apex:OutputPanel rendered="{!IF(bool == 0,true,false)}">
	<apex:PageBlock title="2">
	   ~省略~
	</apex:PageBlock>
	</apex:OutputPanel>
</apex:OutputPanel>

 

 

 

 

All Answers

mits430xmits430x

経験上、reRenderされるoutputPanel はrendered属性を指定できないようです。

下記のようにpanelを分けてみては如何でしょうか?

 

 

<apex:commandButton reRender="page1,page2" value="検索"/>
<br/><br/>

<apex:OutputPanel id="page1">
	<apex:OutputPanel rendered="{!IF(bool != 0,true,false)}">
	<apexageBlock title="1">
	   ~省略~
	</apex:PageBlock>
	</apex:OutputPanel>
</apex:OutputPanel>


<apex:OutputPanel id="page2">
	<apex:OutputPanel rendered="{!IF(bool == 0,true,false)}">
	<apex:PageBlock title="2">
	   ~省略~
	</apex:PageBlock>
	</apex:OutputPanel>
</apex:OutputPanel>

 

 

 

 

This was selected as the best answer
yuuki_uyuuki_u

返信が遅くなり、申し訳ありません。

 

OutputPanelを2重に使用するんですね。

 

とても勉強になりました!!

 

ありがとうございました!!!