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