ユーザーが商談のリストを選択する必要がある Visualforce ページを作成しています。ユーザーが前のボタンをクリックするとページネーションが実装され、リスト パネルが再びレンダリングされ、呼び出しでリストの値が変更されました。
<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>
checkItem を維持するための OpportunityWrapper クラスがあります。
public class OpportunityWrapper {
public Boolean checked { get; set; }
public Opportunity cat { get; set; }
public OpportunityWrapper(){
cat = new Opportunity();
checked = false;
}
public OpportunityWrapper(Opportunity c){
cat = c;
checked = false;
}
public OpportunityWrapper(Opportunity c, Boolean checked){
cat = c;
this.checked = checked ;
}
}
カスタム コントローラで 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;
}
前のボタンが押されると、次のメソッドが呼び出されます
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
私の目標は、機会ラッパーをチェックして次または前のリストに移動し、戻ったときにそのアイテムをチェックする必要がありますが、設定値を常に空にしていますが、選択値のリストをPrevious()メソッドのセットに保存している理由ですその表示セットは常に空ですか??