当我单击“编辑”链接时,我试图隐藏“ searchCriteria”部分。隐藏是在控制器的“ editSearchResult()”方法中使用“ pageLoad”变量完成的。
“ pageLoad”用于“ searchCriteria”部分中的呈现属性。但是,单击“编辑”链接后,该部分不会使用Controller中的更新值进行刷新。
但是,如果我删除“ searchCriteria”部分的“ rendered”属性,系统将使用Controller中的更新值刷新该部分。谁能解释“渲染”的显示方式?
<apex:page controller="RerenderDemoController">
<apex:form id="thisForm">
<apex:outputPanel id="searchCriteria" rendered="{!pageLoad}">
<apex:pageBlock>
<apex:pageBlockSection>
This is Search Criteria Section. Page Load: {!pageLoad},
User: <apex:outputText value="{!userName}">
</apex:outputText>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:outputPanel>
<apex:outputPanel id="searchResults">
<apex:pageBlock>
<apex:pageBlockSection>
This is Search Results Section. {!accts}
</apex:pageBlockSection>
</apex:pageBlock>
</apex:outputPanel>
<apex:outputPanel id="EditResult">
<apex:pageBlock>
<apex:pageBlockSection>
This is Edit Result Section.
<apex:commandLink action="{!editSearchResult}" reRender="searchCriteria">Edit</apex:commandLink>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:outputPanel>
</apex:form>
</apex:page>
public class RerenderDemoController {
public List<Account> accts {get; set;}
public Boolean pageLoad {get; set;}
public String userName {get; set;}
public RerenderDemoController() {
pageLoad = true;
userName = 'My First Name';
accts = [select id, name from Account limit 10];
}
public void editSearchResult() {
pageLoad = false;
accts = [select id, name from Account limit 20];
userName = 'My Last Name';
}
}
答案 0 :(得分:0)
您可以做的是,将您的outputPanel
换成另一个outputPanel
<apex:outputPanel id="searchCriteria">
<apex:outputPanel rendered="{!pageLoad}">
<apex:pageBlock>
<apex:pageBlockSection>
This is Search Criteria Section. Page Load: {!pageLoad},
User: <apex:outputText value="{!userName}">
</apex:outputText>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:outputPanel>
</apex:outputPanel>
希望,这将解决您的问题。
答案 1 :(得分:0)
您可以使用JQuery隐藏内容,只需使用html类并使用[jquery]:https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
并使用$('.classname').hide();
希望对您有帮助。