Google Web Toolkit - 如何防止重复记录?

时间:2014-04-23 04:55:57

标签: gwt celltable

我是GWT的新手。我正在尝试使用单元格表来执行此操作。这是我的问题:

姓名性别

Ali M
阿布中号
丝提˚F

第1页

姓名性别

丝提˚F
努尔˚F
艾哈迈德˚F

第2页

我使用简单的寻呼机来做分页功能。除了下一页,一切都很好。 当我点击下一页时,siti记录会出现2次。 如何防止名称Siti没有出现在第2页?以下是我的代码:

private static class Contact{
    private final String name;
    private final String gender;

    public Contact(String name, String gender){
        this.name = name;
        this.gender = gender;
    }
}

private static final List<Contact> CONTACTS = Arrays.asList(
        new Contact("Ali","M"),
        new Contact("Abu","M"),
        new Contact("Siti","F"),
        new Contact("Noor","F"),
        new Contact("Ahmad","M")
);

public void onModuleLoad(){
    final CellTable<Contact> table = new CellTable<Contact>();
    table.setPageSize(3);

    TextColumn<Contact> nameColumn = new TextColumn<Contact>(){
        @Override
        public String getValue(Contact object) {
            return object.name;
        }
    };

    TextColumn<Contact> genderColumn = new TextColumn<Contact>(){
        @Override
        public String getValue(Contact object) {
            return object.gender;
        }
    };

    table.addColumn(nameColumn, "Name");
    table.addColumn(genderColumn, "Gender");

    AsyncDataProvider<Contact> provider = new AsyncDataProvider<Contact>(){

        @Override
        protected void onRangeChanged(HasData<Contact> display) {
            int start = display.getVisibleRange().getStart();
            int end = start + display.getVisibleRange().getLength();
            end = end >= CONTACTS.size() ? CONTACTS.size() : end;
            List<Contact> sub = CONTACTS.subList(start,end);
            updateRowData(start,sub);
        } 
    };
    provider.addDataDisplay(table);
    provider.updateRowCount(CONTACTS.size(), true);

     SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
    SimplePager pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
    pager.setDisplay(table);

private static class Contact{ private final String name; private final String gender; public Contact(String name, String gender){ this.name = name; this.gender = gender; } } private static final List<Contact> CONTACTS = Arrays.asList( new Contact("Ali","M"), new Contact("Abu","M"), new Contact("Siti","F"), new Contact("Noor","F"), new Contact("Ahmad","M") ); public void onModuleLoad(){ final CellTable<Contact> table = new CellTable<Contact>(); table.setPageSize(3); TextColumn<Contact> nameColumn = new TextColumn<Contact>(){ @Override public String getValue(Contact object) { return object.name; } }; TextColumn<Contact> genderColumn = new TextColumn<Contact>(){ @Override public String getValue(Contact object) { return object.gender; } }; table.addColumn(nameColumn, "Name"); table.addColumn(genderColumn, "Gender"); AsyncDataProvider<Contact> provider = new AsyncDataProvider<Contact>(){ @Override protected void onRangeChanged(HasData<Contact> display) { int start = display.getVisibleRange().getStart(); int end = start + display.getVisibleRange().getLength(); end = end >= CONTACTS.size() ? CONTACTS.size() : end; List<Contact> sub = CONTACTS.subList(start,end); updateRowData(start,sub); } }; provider.addDataDisplay(table); provider.updateRowCount(CONTACTS.size(), true); SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class); SimplePager pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true); pager.setDisplay(table);

请帮我解决这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

您最有可能遇到gwt最后一页问题,如链接问题所述:

GWT - celltable with simple pager issue
SimplePager row count is working incorrectly

这里的解决方案是设置:

setRangeLimited(false)

,最后一页正确分页,即。它只包含Noor和Ahmad。

总而言之:实际上这里没有重复,但是在最后一页的情况下是分页错误。您将观察到与其他数据量相同的行为,但在我看来,它始终只是最后一页的问题。