`
liuxuehua12
  • 浏览: 6148 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

解决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;
        }
      
     }-*/;


附:smartGWT GridPager分页组件
分享到:
评论

相关推荐

    smartgwt 分页grid

    本文将深入探讨如何使用SmartGWT来创建一个自定义的分页Grid组件,以及相关的知识点。 首先,我们需要了解Grid组件在SmartGWT中的作用。Grid是SmartGWT中的核心组件之一,用于展示二维数据,它支持多种功能,如排序...

    smartGwt学习笔记

    在SmartGWT的学习和开发过程中,经常会遇到各种挑战和问题,比如本文提到的“分页问题GridPager”。SmartGwt是一个强大的Java库,用于构建基于Web的用户界面,它提供了丰富的组件,包括ListGrid,一个功能强大的表格...

    smartgwt官方实例

    1. **SmartGWT组件**:SmartGWT提供了众多可定制的UI组件,如按钮、表格、表单、图表等。实例中,你可以看到如何创建和配置这些组件,以及它们在实际应用中的表现。 2. **数据绑定**:SmartGWT支持自动的数据绑定,...

    SmartGwt学习文档

    SmartGwt是一款强大的Java库,专门用于构建富互联网应用程序(RIA,Rich Internet Applications)。它基于Google的GWT(Google Web Toolkit)框架,并扩展了其功能,提供了丰富的UI组件和更高级的客户端性能优化。...

    SmartGWT 12.0

    SmartGWT库的核心在于它将Google Web Toolkit (GWT) 的优势与智能组件模型相结合,为开发者提供了丰富的UI组件、强大的数据管理工具以及高效的异步通信机制。 1. **SmartGWT 框架** SmartGWT 是基于GWT的扩展,它...

    smartgwt-1.3

    SmartGWT是基于Google Web Toolkit (GWT) 的扩展,它提供了丰富的用户界面组件和高级功能,旨在简化开发人员的工作流程,提高Web应用的用户体验。 1. **SmartGWT概述** - SmartGWT是一个开源项目,由Intersystems...

    SmartGWT2.0 API

    SmartGWT 2.0 API 是一款基于Google Web Toolkit (GWT) 2.0的高级组件库,它为开发者提供了丰富的用户界面组件和强大的功能,以构建高性能、交互式的Web应用程序。SmartGWT 2.0 在其前身的基础上进行了多方面的改进...

    smartGWT最新zip

    在实际开发中,SmartGWT的组件库极大地简化了前端界面的开发,让开发者无需深入理解JavaScript和CSS的细节,就能创建出美观且响应式的用户界面。同时,由于其基于GWT,开发者还可以利用GWT的特性,如编译时的类型...

    smartGWT 3.1 最新版本

    - **组件丰富**:SmartGWT包含各种各样的UI组件,如表格、树形视图、图表、表单元素等,这些组件都经过精心设计,可以快速构建复杂的用户界面。 - **数据绑定**:SmartGWT支持数据驱动的开发,允许开发者轻松地将...

    smartgwt2.4 最新发布

    对于经验丰富的开发者,它能提供快速查找特定功能和解决技术问题的途径。 在SmartGWT 2.4的“doc”文档中,你可以期待以下内容: 1. **API文档**:详述了SmartGWT 2.4的所有类、接口和方法,包括它们的参数、...

    基于Maven的SmartGWT项目示例

    SmartGWT提供了丰富的UI组件库,这些组件基于Google Web Toolkit (GWT) 开发,但提供了更高级的功能和更好的性能。SmartGWT使得开发者可以使用Java编写客户端代码,同时享受GWT的跨浏览器兼容性和JavaScript编译优势...

    smartGWT开发环境搭建(完整工程)

    SmartGWT是一个强大的Java框架,用于构建富互联网应用程序(RIA)。它基于Google Web Toolkit (GWT) 并扩展了其功能,提供了丰富的组件库和高级的UI设计工具。本教程将详细阐述如何搭建SmartGWT的开发环境,以及如何...

    smartGWT

    "SmartGWT"是一个强大的Java库,用于构建企业级的Web应用程序。它基于Google Web Toolkit (GWT) 并提供了一系列高级组件和功能,旨在...同时,对源码的探索也有助于理解SmartGWT的工作机制,便于自定义组件或解决问题。

    smartgwt + spring + hibernate

    SmartGWT是基于GWT(Google Web Toolkit)的一个强大的UI库,提供丰富的用户界面组件和高性能的JavaScript客户端应用。Spring是一个开源的Java应用框架,它提供了依赖注入、AOP(面向切面编程)以及各种企业服务。...

    SmartGWT 入门 SmartGWT 入门

    ### SmartGWT 入门详解 #### 一、SmartGWT 概述 **SmartGWT** 是一款基于 **Google Web Toolkit (GWT)** 的高级Web应用开发框架,旨在简化企业级Web 2.0应用的开发过程。自从 **GWT** 发布以来,它吸引了大量的...

    SmartGWT 快速开发文档(Quick Start Guide)

    - **消除性能瓶颈**:这里将重点讨论 SmartGWT 如何帮助开发者解决常见的 Web 应用性能问题。 #### 四、为什么选择 SmartGWT? - **丰富的控件库**:SmartGWT 提供了一套完整且丰富的控件库,覆盖了从基本的文本...

    smartgwt5.0

    SmartGWT 是封装了 SmartClient 的 GWT API。而 SmartClient 是一个开源的企业级 Ajax 开发框架。 Google Web Toolkit 的发布... SmartGWT 不仅仅是“又一个 Web 控件库”,它最大的特色在于提供了整合客户端和服务器端

    smartgwt最新版本GWT的DEMO

    SmartGWT是基于Google Web Toolkit (GWT) 的一个开源框架,它为开发富互联网应用程序(RIA)提供了丰富的组件库和高级功能。SmartGWT的最新版本进一步提升了用户体验,简化了开发过程,提供了更多现代Web设计的需求...

    SmartGwt 之原生 Desktop(与gxt无关)

    在 SmartGwt 中,使用原生 Desktop 功能并不复杂,但要注意性能优化。由于 Desktop 支持复杂的交互,过多的窗口或组件可能会对页面加载速度产生影响。因此,在设计时应考虑合理组织窗口,避免不必要的资源消耗。 ...

    smart GWT 3.1

    SmartGWT 是封装了 SmartClient 的 GWT API。SmartGWT 有如下特色: 丰富的控件。很多较为复杂的常用界面都被包装成简单易用的控件。比如可 编辑的树形表格、查询常用的过滤器创建器和类似 Google Calendar 的日历...

Global site tag (gtag.js) - Google Analytics