Salesforce 在apex控制器中维护复选框状态
我正在编写一个visualforce页面,其中用户必须选择我实施分页的机会列表,当用户单击“上一步”按钮时,它将再次呈现列表面板,并且我更改了调用我的visualforce页面段中列表的值Salesforce 在apex控制器中维护复选框状态,salesforce,apex-code,visualforce,Salesforce,Apex Code,Visualforce,我正在编写一个visualforce页面,其中用户必须选择我实施分页的机会列表,当用户单击“上一步”按钮时,它将再次呈现列表面板,并且我更改了调用我的visualforce页面段中列表的值 <apex:pageBlockTable value="{!numbers}" var="n" align="center"> <apex:column > <apex:inputCheckbox value="{!n.checked}"/>
<apex:pageBlockTable value="{!numbers}" var="n" align="center">
<apex:column >
<apex:inputCheckbox value="{!n.checked}"/>
</apex:column>
<apex:column value="{!n.cat.Id}" />
<apex:column value="{!n.cat.Name}" />
<apex:facet name="footer">Showing Page # {!pageNumber} of {!totalPages}</apex:facet>
</apex:pageBlockTable>
在自定义控制器中获取OpportunityWrapper列表的代码段为
public List<OpportunityWrapper> getNumbers() {
opp = new List<OpportunityWrapper>();
if ( selectedPage != '0' )
counter = list_size*integer.valueOf(selectedPage)-list_size;
//we have to catch query exceptions in case the list is greater than 2000 rows
try {
for ( Opportunity o : [SELECT Id,Name from Opportunity order by name
limit :list_size offset :counter] ) {
if ( !oppId.contains(o.Id) )
opp.add(new OpportunityWrapper(o));
else
opp.add(new OpportunityWrapper(o,true));
}
} catch ( QueryException e ) {
ApexPages.addMessages(e);
return null;
}
return opp;
}
以下是自定义类的公共成员
private integer counter = 0; //keeps track of the offset
private integer list_size = 5;
public integer total_size;
List<OpportunityWrapper> opp ;
public List<OpportunityWrapper> oppwrapper = new List<OpportunityWrapper>(); //list of Opportunity wrapper shown in the page
public Set<String> oppId = new Set<String>(); //set for maintaining which Id's are checked
专用整数计数器=0//跟踪偏移量
私有整数列表_size=5;
公共整数总大小;
列出opp;
public List oppwrapper=new List()//页面中显示的商机包装器列表
公共集合oppId=新集合()//设置用于维护选中的Id
我的目标是当我选中任何opportunity包装并转到下一个或上一个列表时,以及当返回时,该项目应处于选中状态,但我得到的设置值始终为空,但我将选择值列表存储在上一个()方法的集合中,为什么它的显示集始终为空???您可以找到两个解决方案(一个是用JS实现的,另一个是用apex controller实现的)在以下主题中:
您能找到解决此问题的好方法吗?
public PageReference Previous() {
//user clicked previous button
for ( OpportunityWrapper o : opp ) {
if ( o.checked && oppId.contains(o.cat.Id) )
oppId.add(o.cat.Id);
}
selectedPage = '0';
counter -= list_size;
return null ;
}
private integer counter = 0; //keeps track of the offset
private integer list_size = 5;
public integer total_size;
List<OpportunityWrapper> opp ;
public List<OpportunityWrapper> oppwrapper = new List<OpportunityWrapper>(); //list of Opportunity wrapper shown in the page
public Set<String> oppId = new Set<String>(); //set for maintaining which Id's are checked