2012-03-22 7 views
4

SimplePagerのlastButtonに問題があります。 私はcelltableに3ページ、ページサイズ= 11(1つの空レコード+ 10レコード(値付き))、合計レコード= 26です。GWT SimplePager LastButtonの問題

SimplePagerを拡張してCustomerPagerを使用しました。

1回目の試行では、celltableに1 + 10レコードが表示されます。&最後のページボタンが有効になっています(最初の&前ボタン無効)。 しかしLASTPAGEボタンが動作しない... :(問題...(イベントはありません火災)

奇妙な振る舞いいただきました!いけない知っている:

1 @最後のページボタンが(私は最後のページに訪問したときにのみ働いています私の場合は3ページ)。2 @

が、私は1ページ目の午前のn私は2ページ目に移動したと(celltableで合計3ページ)。この場合は正しいですすべてのボタンが有効になっている時間。 最終ボタンがあります次のように動作しますが、次のボタンのように動作します

私のGWTアプリケーションは、クライアント側から。 setPageでから(最終ボタン

//From SimplePager 

lastPage.addClickHandler(new ClickHandler() { 
     public void onClick(ClickEvent event) { 
      lastPage(); 
     } 
     }); 


     @Override 
    public void lastPage() { 
    super.lastPage(); 
    } 

// From AbstractPager 
    /** 
    * Go to the last page. 
    */ 
    protected void lastPage() { 
    setPage(getPageCount() - 1); 
    } 
protected void setPage(int index) { 
    if (display != null && (!isRangeLimited || !display.isRowCountExact() || hasPage(index))) { 
     // We don't use the local version of setPageStart because it would 
     // constrain the index, but the user probably wants to use absolute page 
     // indexes. 
     int pageSize = getPageSize(); 
     display.setVisibleRange(pageSize * index, pageSize); 
    } 
    } 

ため以下またはコード上から偽のいくつかの条件とすることができるように

おそれインデックス値は

コードフローであるAbstractPagerからsetPageで(INTインデックス)方式で不適切です())

実際のレコード= 26と3空のレコード(第一空のレコード/ページ)データサイズと

月のB問題:|

データサイズに基づいてページ数を確認するにはどうすればよいですか? ?

どうすればこの問題を解決できますか?

+0

私は問題は 'setPageで()'で条件に関係していると思います。 'if'条件の前にSOPを入れてみるか、コード –

答えて

0

OnRangeの変更メソッドAsyncDataProviderにのみcellTable.setRowCount(int size, boolean isExact)が追加されました。 私の問題が解決さ:)

protected void onRangeChanged(HasData<RecordVO> display) { 
//----- Some code -------- 
cellTable.setRowCount(searchRecordCount, false); 
//----- Some code -------- 
} 
0

あなたのコードをもっと見ることなく、これは、物事がうまくいかない複数の場所がある可能性があるので、答えが難しい質問です。

SimplePagerでsetDisplay(...)に電話して、範囲を計算するのに必要なデータがあることを確認します。

devmodeで実行できない場合は、ブラウザでGWTのログをいくつか設定することをおすすめします(たとえば、ログはポップアップパネルなどに書き込んでください)。see this discussion

3

編集:私はページャのデフォルトコンストラクタはあなたに「最後」ボタンが、その代わりに(?右、恐ろしい)「早送り1000行」ボタンを与えないことが分かりました。

はそうのような次のコンストラクタを呼び出して、あなたの問題が解決参照:

SimplePager.Resources resources = GWT.create(SimplePager.Resources.class); SimplePager simplePager = new SimplePager(TextLocation.CENTER, resources , false, 1000, true);

最初の「偽」のフラグが「早送りボタン」をオフにし、最後に「真」のフラグがオン「最後の」ボタン。

また、最後のボタンは、ポケットベルが持っているレコードの総量を知っている場合にのみ機能します。

あなたはとても似合計を更新するために、テーブルのsetRowCount関数を呼び出すことができます。それは代わりにupdateRowCount方法(同じ使用)だ全てよりも、あなたは付属のデータプロバイダを使用している場合

int totalRecordsSize = 26; //the total amount of records you have boolean isTotalExact = true; //is it an estimate or an exact match table.setRowCount(totalRecordsSize , isTotalExact); //sets the table's total and updates the pager (assuming you called pager.setDisplay(table) before)

+1

をデバッグしてください。"ページャのデフォルトのコンストラクタは、 "最後に"ボタンを与えず、代わりに "早送り1000行"ボタン(恐ろしい、右?) "]はい、これは本当に恐ろしいです。私はちょうど午後にこれを吹き飛ばした。 – Jay

+1

また、このコンストラクタに注意してください。SimplePager(SimplePager.TextLocation location、boolean showFastForwardButton、boolean showLastPageButton) –

0

問題はの状態と関連していると思います。 ifの前にSOPを置くか、コードをデバッグしてください。