2015-06-23 58 views
0

Frineds所有记录,GWT-在celltable列checkboxcell选择我要选择显示记录

我使用celltable他们是我把表头中选择所有记录选项一列,还我使用寻呼机在一页中显示最多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); 
      } 
     } 
    }; 

请给我建议的解决方案....

+0

请帮我... –

回答

0

你可以做这样的事情:

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); 
     } 
    } 
} 
+0

谢谢我会尽力回复.. –

+0

不能正常工作n新的HeaderCheckbox()没有定义 –

+0

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