GWT SimplePager语言 - 为每个下一个和上一个添加历史记录



我需要实现一个服务,就像每当在分页中单击下一个或上一个时,浏览器应该保存状态,以便在执行浏览器返回时返回最后访问的页面。目前它正在发生,就像当我在新标签页和分页中输入任何url时,如果我点击下一步按钮,进一步我点击浏览器返回按钮,它将进入新标签页。

有谁能告诉我如何做到这一点吗?

I have try following

    public class ShortenLastPagePager extends SimplePager implements ValueChangeHandler<String>

{

private int pageSize;

public ShortenLastPagePager( TextLocation location, Resources resources, boolean showFastForwardButton,
    int fastForwardRows, boolean showLastPageButton, int pageSize )
{
    super( location, resources, showFastForwardButton, fastForwardRows, showLastPageButton );
    this.pageSize = pageSize;
}

@Override
public void setPageSize( int pageSize )
{
    this.pageSize = pageSize;
}

@Override
public void setPageStart( int index )
{
    if ( getDisplay() != null ) {
        Range range = getDisplay().getVisibleRange();
        int myPageSize = 0;
        index = Math.min( index, getDisplay().getRowCount() );
        index = Math.max( 0, index );
        myPageSize = Math.min( pageSize, getDisplay().getRowCount() - index );
        if ( index != range.getStart() || myPageSize != range.getLength() ) {
            getDisplay().setVisibleRange( index, myPageSize );
        }
    }
}

@Override
public void nextPage()
{
    if ( getDisplay() != null ) {
        Range range = getDisplay().getVisibleRange();
        setPageStart( range.getStart() + range.getLength() );
    }
}

@Override
public void previousPage()
{
    if ( getDisplay() != null ) {
        Range range = getDisplay().getVisibleRange();
        setPageStart( range.getStart() - pageSize );
    }
}

@Override
public void lastPage()
{
    int remainder = getDisplay().getRowCount() % pageSize;
    if ( remainder > 0 ) {
        setPageStart( getDisplay().getRowCount() - remainder );
    } else {
        if ( getDisplay().getRowCount() / pageSize > 0 ) {
            setPageStart( getDisplay().getRowCount() - pageSize );
        } else {
            setPageStart( 0 );
        }
    }
}

@Override
public void firstPage()
{
    setPageStart( 0 );
}

@Override
public boolean hasPreviousPage()
{
    return getDisplay() == null ? false : getDisplay().getVisibleRange().getStart() > 0 && getDisplay().getRowCount() > 0;
}

@Override
public boolean hasNextPage()
{
    return getDisplay() == null ? false
        : getDisplay().getRowCount() > ( getDisplay().getVisibleRange().getStart() + pageSize );
}

@Override
public void onValueChange( ValueChangeEvent<String> event )
{
    event.getValue();
    System.out.println( event.getSource() );
}

}

它没有击中valuechange它来到nextPage

您可以将代码放在数据提供程序中(假设您有一个),而不是尝试向分页添加值更改侦听器。

在提供内容的数据提供程序中(再次假设是一个表或列表),然后根据需要简单地更新浏览器历史记录。

之类的
@Override
protected void onRangeChanged(final HasData<YourObject> display) {
  // update browser URL without navigating
  History.newItem(historyMapper.getToken(place), false);
  ...
}

然后在您的位置标记中添加支持,用于存储分页数据、起始索引、页面长度等。

在活动开始时需要相应的代码来读取分页数据并在必要时处理它。

理想情况下,如果你正在使用活动和地点,你想要避免使用浏览器后退按钮,因为通常它会导致创建一个新的地方和新的活动,这有点重。我想你们可以通过编码来解决这个问题。

相关内容

最新更新