解决GridPager分页组件复选框不能全选问题
来源:互联网 发布:南京大学软件学院 校区 编辑:程序博客网 时间:2024/06/12 04:37
GridPager分页组件在ListGrid 配置了
setSelectionType(SelectionStyle.SIMPLE);
setSelectionAppearance(SelectionAppearance.CHECKBOX)
后会出现 “Can't select that many records at once”提示,并不能全选。
解决思路:去掉提示,将选择grid中所有记录替换为选择所有可见的记录。
实现:
第一步: 在GridPager中为ListGrid的DataArrived事件添加去掉提示代码覆盖SmartClient的代码(因为SmartClient是在数据到达后就设置提示,并将checkBoxField设为不可用)。代码如下:
/**
* 自定义ListGrid的CheckBoxField属性,覆盖SmartGWT的范围太大不能提示
* 需要在ListGrid的DataArrivedHandler事件处理中调用
*
* @param grid 要更改的ListGrid对象
*/
public native void changeCheckBoxFieldProperty(ListGrid grid)/*-{
var self = grid.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
if (self.getCurrentCheckboxField()) {
var cbPos = self.getCheckboxFieldPosition(),falseImage = self.checkboxFieldFalseImage || self.booleanFalseImage;
// remove selectionRangeNotLoadedMessage(Can't select that many records at once) prompt
// checkbox is enable
var props = {
disabled: false,
showHover: false,
prompt: null,
title: self.getValueIconHTML(falseImage, field)
}
self.setFieldProperties(cbPos, props);
}
}-*/;
grid.addDataArrivedHandler(new DataArrivedHandler()
{
public void onDataArrived(DataArrivedEvent event)
{
changeCheckBoxFieldProperty(grid);//覆盖SmartGWT不能选择提示
updatePagerControls(getTotalPages());
}
});
第二步: 在定义ListGrid时,自定义表单点击事件
//自定义表头单击事件
xxxGrid.addHeaderClickHandler(new HeaderClickHandler(){
public void onHeaderClick(HeaderClickEvent event)
{
Boolean re = changeSelectRange(xxxGrid,event.getFieldNum());
if(re != null){
event.cancel();
}
}
});
/**
* javascript本地方法。 自定义checkBoxHeader选择范围为当前页面,解决默认选择所有导致出现提示"Can't select that many records at once"问题。
* @param grid 要更改CheckboxHeader选择的ListGrid对象
* @param fieldNum checkBoxField字段位置
* @return 如果该字段是checkBoxField则返回当前的状态,选中为true,未选为false,如果该字段不是checkBoxField,则返回null
*/
public native Boolean changeSelectRange(ListGrid grid ,int fieldNum)/*-{
var self = grid.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()();
var field = self.fields[fieldNum];
// check if the checkbox column header was clicked
if (self.isCheckboxField(field) && self.selectionType != "single" && self.canSelectAll != false) {
if (field._allSelected) {
self.deselectAllRecords();
//更改checkboxHeader图标为不选中
var icon = self.checkboxFieldFalseImage || self.booleanFalseImage,
title = self.getValueIconHTML(icon, field);
self.setFieldTitle(fieldNum, title);
field._allSelected=false;
} else {
var visibleRows = self.getVisibleRows();//return visibleRows start end end point ,if no visiable return [-1,-1]
var dataRows = self.data.getRange(visibleRows[0], visibleRows[1]+1);
self.selectRecords(dataRows, true);
//更改checkboxHeader图标为选中
var icon = self.checkboxFieldTrueImage || self.booleanTrueImage,
title = self.getValueIconHTML(icon, field);
self.setFieldTitle(fieldNum, title);
field._allSelected=true;
}
return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(field._allSelected);
}else{
//if click other header clear all selected records
self.deselectAllRecords();
field._allSelected=false;
return null;
}
}-*/;
- 解决GridPager分页组件复选框不能全选问题
- smartGWT ListGrid分页页面组件GridPager
- JSF复选框全选问题
- 关于复选框全选问题
- js全选 复选框的问题
- 复选框全选与全不选的问题
- asp分页,复选框全选,选中的全删
- AvalonJs入门二 复选框全选反选+layui分页
- 实现购物车 全选全不选,反选,单选-选满时同步全选复选框--复选框checked属性取值问题已解决
- 复选框全选、取消全选
- 复选框全选
- 对复选框全选
- 复选框全选 js
- 复选框全选.js
- 复选框全选功能
- 复选框全选效果
- 全选复选框
- 全选/取消复选框
- 堆和栈的区别 (转贴)
- HDU 3803
- 【外刊IT评论】你不是软件工程师!
- .NET与java的MVC模式(2):struts2核心工作流程与原理
- 【转载】虚函数实现机制
- 解决GridPager分页组件复选框不能全选问题
- ruby和php的比较,以及和java的对比
- FireFox4.0.1安装“新标签页(空白)”安装8格火狐主页插件
- 以太网交换机端口聚合与端口汇聚
- 在安装FC5时停在“ACPI: Assume Root Bridge [/_SB_.PCI0] bus is 0”之解决办法
- 考研励志--我考研时觉得非常好的一篇文章,适用于考研新手
- 无题
- ubuntu安装过程中的“no root device defined”解决方案
- Linux ext2/ext3文件系统详解