GWT-在celltable列中选中框Cell select all records i Way select display record

GWT-在celltable列中选中框Cell select all records i Way select display record,gwt,Gwt,Frineds 我使用的是celltable,它们是一列,我把它放在表格标题中,用于选择所有记录选项,而且我使用的是pager,它在一页中最多显示15条记录。当我点击selectall选项时,它将选择出现在第2、3、4页的所有记录,。。。。简而言之,所有记录都被选中(如果总记录数为100,则选择100条记录)。所以我只想选择显示页面记录,而不是全部。。。 参考代码为- final SelectionModel < GenericFirewallRule > selecti

Frineds

我使用的是celltable,它们是一列,我把它放在表格标题中,用于选择所有记录选项,而且我使用的是pager,它在一页中最多显示15条记录。当我点击selectall选项时,它将选择出现在第2、3、4页的所有记录,。。。。简而言之,所有记录都被选中(如果总记录数为100,则选择100条记录)。所以我只想选择显示页面记录,而不是全部。。。 参考代码为-

      final SelectionModel < GenericFirewallRule > selectionModel = 
new MultiSelectionModel < GenericFirewallRule > ();
            deleteRuleCellTable.setSelectionModel(selectionModel,DefaultSelectionEventManager. < GenericFirewallRule > createCheckboxManager());
    //      CheckboxCell cbForHeader = new CheckboxCell();

    Column < GenericFirewallRule, Boolean > checkColumn = new Column < GenericFirewallRule, Boolean > (
    new CheckboxCell()) {@Override
        public Boolean getValue(GenericFirewallRule object) {

            if(object == null || object.getRuleNumber() == null){
                   return null;
            }else{
            if (selectionModel.isSelected(object)) {
                if (!ruleListForDelete.contains(object)) {
                    ruleListForDelete.add(object);
                }
            } else {
                if (ruleListForDelete.contains(object)) {
                    ruleListForDelete.remove(object);
                }
            }

            System.out.println("ruleListForDelete : " + ruleListForDelete);
            return selectionModel.isSelected(object);
            }
        }
    };
final SelectionModelSelectionModel=
新的多选模型<通用防火墙规则>();
deleteRuleCellTable.setSelectionModel(selectionModel,DefaultSelectionEventManager.createCheckboxManager());
//CheckboxCell cbForHeader=新的CheckboxCell();
列checkColumn=新列(
新建CheckboxCell()){@Override
公共布尔getValue(GenericFirewallRule对象){
if(object==null | | object.getRuleNumber()==null){
返回null;
}否则{
如果(selectionModel.isSelected(对象)){
如果(!ruleListForDelete.contains(对象)){
ruleListForDelete.add(对象);
}
}否则{
if(ruleListForDelete.contains(对象)){
ruleListForDelete.remove(对象);
}
}
System.out.println(“ruleListForDelete:+ruleListForDelete”);
返回selectionModel.isSelected(对象);
}
}
};

请向我推荐解决方案……

您可以这样做:

selectAllHeader = new Header<Boolean>(new HeaderCheckbox()) {

    @Override
    public Boolean getValue() {
        for (T item : getVisibleItems()) {
            if (!getSelectionModel().isSelected(item)) {
                return false;
            }
        }
        return getVisibleItems().size() > 0;
    }
};

selectAllHeader.setUpdater(new ValueUpdater<Boolean>() {

    @Override
    public void update(Boolean value) {
        for (T object : getVisibleItems()) {
            getSelectionModel().setSelected(object, value);
        }
    }

});

public class HeaderCheckbox extends CheckboxCell {

    private final SafeHtml INPUT_CHECKED = SafeHtmlUtils.fromSafeConstant("<input type=\"checkbox\" tabindex=\"-1\" checked/>");
    private final SafeHtml INPUT_UNCHECKED = SafeHtmlUtils.fromSafeConstant("<input type=\"checkbox\" tabindex=\"-1\"/>");

    public HeaderCheckbox() {
    }

    @Override
    public void render(Context context, Boolean value, SafeHtmlBuilder sb) {
      if (value != null && value) {
        sb.append(INPUT_CHECKED);
      } else {
        sb.append(INPUT_UNCHECKED);
      }
    }
}
selectAllHeader=新标题(新标题复选框()){
@凌驾
公共布尔getValue(){
对于(T项:getVisibleItems()){
如果(!getSelectionModel().isSelected(项目)){
返回false;
}
}
返回getVisibleItems().size()>0;
}
};
选择AllHeader.setUpdater(新的ValueUpdater(){
@凌驾
公共无效更新(布尔值){
对于(T对象:getVisibleItems()){
getSelectionModel().setSelected(对象、值);
}
}
});
公共类标题checkbox扩展CheckboxCell{
私有最终SAFEHTMLINPUT_CHECKED=SAFEHTMLTILS.fromSafeConstant(“”);
private final SafeHtml INPUT_UNCHECKED=safehtmlitls.fromSafeConstant(“”);
公共标题检查框(){
}
@凌驾
公共void呈现(上下文上下文、布尔值、安全HtmlBuilder sb){
if(值!=null&&value){
sb.追加(已检查输入);
}否则{
sb.追加(未选中输入);
}
}
}

我只是想说明您可以使用
getVisibleItems()
来解决您的问题。如果您想按原样使用,我为您添加了HeaderCheckbox类代码。