Jeder, der eine Idee, wie Sie das ausgewählte Kontrollkästchen während der Seitenumbruch beibehalten und einen anderen Wert in der Auswahlliste mit meinen Codes unten auswählen. Danke! :)Behalten Sie das ausgewählte Kontrollkästchen während der Paginierung bei
Hier ist die Erweiterung, die ich verwendet habe. Es enthält die Tabelle, Auswahl von Werten und Seitenumbruch.
//for season status
public void Stats(){
this.RaceEntries= 0;
this.TotDis= 0;
this.hasError = false;
for(TrackWrapper tw : twList){
if(tw.isChecked){
if(this.RaceEntries<=12 && this.TotDis<=300){
this.RaceEntries++;
this.TotDis += tw.tra.Length__c;
}
if(this.RaceEntries > 12){
this.hasError = true;
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Race Entries exceeded. 12 tracks per season only.'));
}
if(this.TotDis > 300){
this.hasError = true;
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Distance exceeded. 300KM per season only.'));
}
}
//List<TrackWrapper> tempList = new List<TrackWrapper>();
}
this.RemRace= 12 - this.RaceEntries;
this.RemDis= 300 - this.TotDis;
}
//Populate the table from the Selected value in selectlist
public void searchRecords(){
trackList= new List<Track__c>();
if(selectValue != null){ //If the selectvalue has a value
OffsetSize = 0;
this.twList= new List<TrackWrapper>();
trackList= Database.query('SELECT Name, Location__c, Difficulty__c, Length__c from Track__c WHERE Difficulty__c LIKE : selectValue LIMIT :LimitSize OFFSET :OffsetSize');
for(Track__c t : this.trackList) {
TrackWrapper tw = new TrackWrapper();
tw.tra = t;
tw.isChecked = false;
this.twList.add(tw);
}
//for TotalPage Numbers per selected value
Integer totalSelect = database.countQuery('select count() from Track__c WHERE Difficulty__c LIKE : selectValue');
Integer totDiv = totalSelect /5;
Integer remain = math.mod(totalSelect, 5);
if(remain!= 0){
this.totalPage = totDiv + 1;
} else{
this.totalPage = totDiv;
}
currentPage = 1;
buttonDisable();
}else if(selectValue == null){ // If the selectvalue is null
this.twList= new List<TrackWrapper>();
trackList= Database.query('SELECT Name, Location__c, Difficulty__c, Length__c from Track__c LIMIT :LimitSize OFFSET :OffsetSize');
for(Track__c t : this.trackList) {
TrackWrapper tw = new TrackWrapper();
tw.tra = t;
tw.isChecked = false;
this.twList.add(tw);
}
//for TotalPage Numbers per selected value
Integer total = database.countQuery('select count() from Track__c');
Integer tot = total/5;
Integer rem = math.mod(total, 5);
if(rem!= 0){
this.totalPage = tot + 1;
}else{
this.totalPage = tot;
}
buttonDisable();
}
}
//for pagination
public integer totalRecs;
public integer OffsetSize{get;set;}
public integer LimitSize= 5;
public boolean isFirstPage {get;set;}
public boolean isLastPage {get;set;}
public Integer currentPage {get;set;}
public Integer totalPage {get;set;}
public Integer remainder {get;set;}
public void buttonDisable(){
this.isFirstPage = false;
this.isLastPage = false;
if(currentPage == 1){
this.isFirstPage = true;
}
if(currentPage == totalPage) {
this.isLastPage = true;
}
}
// PAGINATION
public void FirstPage(){
OffsetSize = 0;
searchRecords();
this.currentPage = 1;
buttonDisable();
}
public void previous(){
OffsetSize = OffsetSize - LimitSize;
searchRecords();
this.currentPage--;
buttonDisable();
}
public void next(){
OffsetSize = OffsetSize + LimitSize;
searchRecords();
this.currentPage++;
buttonDisable();
}
public void LastPage(){
totalRecs = [select count() from track__c];
OffsetSize = totalrecs - math.mod(totalRecs,LimitSize);
searchRecords();
this.currentPage = this.totalPage;
buttonDisable();
}
Und das ist die Visualforce, die ich verwendet habe. Es enthält auch die Tabelle, die Auswahlliste und die Seitennummerierung.
Es funktioniert nicht –
Was nicht funktioniert, können Sie weitere Details zur Verfügung stellen? Haben Sie Ihre paginate-Methode aufgerufen, in der der Kommentar "// paginate method" steht? –