解决smartGWT GridPager分页组件复选框不能全选问题

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;
}

}-*/;


附:[url=http://blog.csdn.net/gofly1980/archive/2011/05/17/6427638.aspx]smartGWT GridPager分页组件[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值