2017-10-02 7 views
0

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.

Antwort

0

Sie müssen eine Karte verwenden, um die aktuellen Werte vor der Seitennumerierung im Speicher zu speichern und dann nach der Seitennumerierung Werte von der Karte abzurufen. zum Beispiel:

Map<Id,trackWrapper> trackMap = new Map<Id,trackWrapper>(); 

public next(){ 
    for (trackWrapper t : twList){ 
    trackMap.put(t.tra.id, t); 
    } 
    //paginate method 
    for (trackWrapper t : twList){ 
    if (trackMap.containsKey(t.tra.id)){ 
     t.isChecked = trackMap.get(t.tra.id).isChecked; 
    } 
    } 
} 
+0

Es funktioniert nicht –

+0

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? –

Verwandte Themen