`
lzj520
  • 浏览: 213421 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

081108 GWT分页显示数据

    博客分类:
  • Ajax
阅读更多
基于上一篇日志的实例的基础上修改:

CRUDService.java:

package client;

import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.core.client.GWT;

public interface CRUDService extends RemoteService {
     Student[] getStudent(String PageNum)     ;

    String getPagenum();

    public static class App {
        private static CRUDServiceAsync ourInstance = null;

        public static synchronized CRUDServiceAsync getInstance() {
            if (ourInstance == null) {
                ourInstance = (CRUDServiceAsync) GWT.create(CRUDService.class);
                ((ServiceDefTarget) ourInstance).setServiceEntryPoint(GWT.getModuleBaseURL() + "CRUD/CRUDService");
            }
            return ourInstance;
        }
    }
}


CRUDServiceImpl.java:

package server;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import client.CRUDService;
import client.Student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.cfg.Configuration;
import java.util.List;
import java.util.Iterator;

public class CRUDServiceImpl extends RemoteServiceServlet  implements CRUDService {
    private static final SessionFactory sessionFactory;
    String Pagenum = "1";
    static {
            try {
                // Create the SessionFactory from hibernate.cfg.xml
                sessionFactory = new Configuration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                // Make sure you log the exception, as it might be swallowed
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }

        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }

    public List ListStudent(String PageNum){
       Session session =  getSessionFactory().getCurrentSession() ;
        session.beginTransaction();
         Query query = session.createSQLQuery("select * from t_student")
        .addScalar("id", Hibernate.LONG)
        .addScalar("name", Hibernate.STRING)
        .addScalar("email", Hibernate.STRING);
        int PageSize = 10;

        try{
            if (Integer.parseInt(PageNum)!=0 | PageNum!=null ){
            query.setFirstResult((Integer.parseInt(PageNum)-1) * PageSize);
            query.setMaxResults(PageSize);
            }else{
            query.setFirstResult(0);
            query.setMaxResults(PageSize);
            }
        }catch(Exception e){
            query.setFirstResult(0);
            query.setMaxResults(PageSize);
        }
        List ls = query.list();
        session.getTransaction().commit();
        return ls;
    }

    public int CountStudent(){
       Session session =  getSessionFactory().getCurrentSession() ;
        session.beginTransaction();
         List ls = session.createSQLQuery("select count(*) from t_student").list();
        session.getTransaction().commit();
        return Integer.parseInt(ls.iterator().next().toString());
    }

        public Student[] getStudent(String PageNum){
             this.setPagenum(PageNum);
             Student[] student = new Student[this.CountStudent()];
            int i = 0;
          for(Iterator it = this.ListStudent(PageNum).iterator();it.hasNext();i++) {
             Object[] ob = (Object[] )it.next();
                student[i]=new Student(ob[0].toString(),ob[1].toString(),ob[2].toString());
              
          }

             return student;
          }

     public void setPagenum(String pagenum){
         this.Pagenum = pagenum;
     }

    public String getPagenum() {
        return Pagenum;  //To change body of implemented methods use File | Settings | File Templates.
    }

}


CRUDServiceAsync.java :

package client;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface CRUDServiceAsync {

    void getStudent(String PageNum, AsyncCallback async);

    void getPagenum(AsyncCallback async);
}

CRUD.java :

package client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.*;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class CRUD implements EntryPoint {
    private CRUDServiceAsync  crudServiceAsync ;
    VerticalPanel main = new VerticalPanel();
    FlexTable lb = new FlexTable();
    HorizontalPanel hp = new HorizontalPanel();
    Button nextpage = new Button("nextpage");
    Button prepage = new Button("prepage");
    private String pagenum = "1";

    public void setPagenum(String pagenum){
        this.pagenum=pagenum;
    }
    public String getPagenum(){
        return this.pagenum;
    }
    int  prepagenum = 1;
    int  nextpagenum =1;

    public void onModuleLoad() {
        main.add(lb);
        main.add(hp);
        hp.add(prepage);
        hp.add(nextpage);
        RootPanel.get().add(main);
        showstudentlist("1");

       prepage.addClickListener(new ClickListener(){
       public void onClick (Widget sender){
       prepagenum = Integer.parseInt(getPagenum())-1;
       showstudentlist(String.valueOf(prepagenum));
       }
     });

     nextpage.addClickListener(new ClickListener(){
      public void onClick (Widget sender){
       nextpagenum = Integer.parseInt(getPagenum())+1 ;
     showstudentlist(String.valueOf(nextpagenum));
      }
      });
 
    }

     private void  showstudentlist(String pagenum) {
         CRUDService.App.getInstance().getStudent(pagenum,new AsyncCallback(){
                  public void onFailure(Throwable caught) {
                  }
                  public void onSuccess(Object result) {
                    Student s[] = ( Student[])result ;
                      for (int i=0;i<=s.length;i++){
                          lb.setText(i,0,s[i].id);
                          lb.setText(i,1,s[i].name);
                          lb.setText(i,2,s[i].email);
                      }
                  }
              });

        CRUDService.App.getInstance().getPagenum(new AsyncCallback(){
            public void onFailure(Throwable caught) {}
            public void onSuccess(Object result) {
                   setPagenum((String)result);
            }
        });

    }

}


分享到:
评论

相关推荐

    smartgwt 分页grid

    通过分析和学习这个示例,你可以更好地理解如何在实际项目中实现自定义的SmartGWT分页Grid组件。 总的来说,SmartGWT的Grid组件结合其强大的分页功能,使得开发者能够高效地管理和展示大量数据,同时提供优秀的用户...

    gwt 分页控件封装

    下面将详细讨论"GWT分页控件封装"的知识点。 首先,**GWT分页控件** 是一种用户界面组件,用于展示数据集的特定部分,通常在数据库查询返回大量结果时使用。它提供“上一页”、“下一页”以及页码选择等功能,使...

    gwt之分页控件

    在IT行业中,分页控件是网页应用中非常常见的一种组件,主要用于处理...在实际开发中,可以参考GWT的官方文档、社区示例以及像“wangzejie.iteye.com/blog/536976”这样的博客资源,进一步提升对GWT分页控件的掌握。

    ext-gwt分页 鉴于网上关于ext-gwt的技术文章很少代码页很少本着开源的精神本人特地写了一个分页的组件供大家学习欢迎下载

    首先,实现EXT-GWT分页,你需要理解以下几个关键概念: 1. **Store**:存储数据的核心组件,它可以连接到各种数据源,如服务器端API或者本地JSON数据。在分页场景下,Store通常配置有分页参数,如每页记录数和当前...

    GWT例子中的分页研究.

    在IT行业中,Google Web ...总的来说,GWT分页研究涉及到客户端和服务器端的交互,数据模型的构建,用户界面的创建,以及事件处理和状态管理等多个方面。理解并实践这些知识点对于开发高效、易用的GWT应用至关重要。

    Spring2.5 and GWT 集成 --实现分页查询功能

    功能: 实现数据分页查询显示 特点: 全是免费工具及开源技术 开发框架: gwt1.4.6 + spring2.5 + mysql5.0 开发工具: Eclipse3.4 Cypal Studio for GWT (Eclipse 的一个插件) 实现原理:通过GWT的RPC来调用Spring...

    GWT DEMO 增删改查

    GWT提供了`DataGrid`或`CellTable`组件,它们可以绑定数据源并显示数据。这些组件支持分页、排序和过滤等功能,使得数据浏览更加灵活。同时,`AsyncCallback`可以用于异步加载数据,确保用户体验流畅。 3. **更新...

    smartGwt学习笔记

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

    网页表格组件 GWT Advanced Table_Table_

    1. **数据绑定**:GWT Advanced Table支持各种数据源,包括List、ArrayList、ArrayBuffer,甚至可以与服务器端的数据模型进行双向绑定。 2. **分页**:用户可以轻松地在大量数据中导航,通过内置的分页控件实现快速...

    gwt甘特图源码例子

    10. **性能优化**:由于甘特图可能会显示大量数据,所以需要考虑性能优化,如数据分页加载、延迟渲染等策略,以提高用户体验。 通过这个“gwt甘特图源码例子”,你可以学习到如何结合GWT的特性,利用Java编写出交互...

    PagingLoadResult分页

    标题中的“PagingLoadResult分页”指的是在数据管理中的一种常见技术——分页加载结果。在大数据量的场景下,一次性加载所有数据可能导致性能下降和用户体验变差,因此分页加载成为了一种有效的解决方案。...

    利用GWT控制创建一个表

    - 分页:可以使用`Pager`控件和`PageSize`属性实现表格分页显示。 - 过滤:通过监听表格的`SelectionModel`和自定义事件处理,实现数据的筛选和过滤。 5. **样式和自定义**: - GWT允许通过CSS样式表定制表格的...

    GWT-Ext_体验之旅.doc

    GWT-Ext 的核心特点在于它扩展了 GWT,融合了 ExtJS 的丰富界面组件,包括有排序功能的表格(Grid)、分页、过滤、拖拽功能的树、自定义的组合下拉框(Combobox)、目录、对话框、表单(Form)等。 1. **GWT-Ext 的...

    java源码:网页表格组件 GWT Advanced Table.zip

    3. **分页和排序**:具备分页功能,用户可以轻松地浏览大量数据,同时支持对数据进行升序或降序的多列排序。 4. **过滤和搜索**:提供强大的过滤和搜索功能,用户可以在表格内快速定位和筛选所需数据。 5. **事件...

    grid-gwt-custom-theme:带有 GWT 2.7 和自定义 Valo 主题的 Vaadin Grid

    Vaadin Grid是Vaadin框架中的一个核心组件,用于显示和操作表格数据,它提供了丰富的功能,如排序、分页、过滤等。 【标签】"Java"表明这个项目是用Java语言开发的,GWT是一个用于构建富互联网应用程序(RIA)的...

    gxt 相关资料

    1. 表格组件(Grid):用于显示和编辑数据,支持分页、排序、过滤等功能。 2. 树形组件(TreeGrid):结合表格和树形结构,适合展示层次化的数据。 3. 菜单组件(Menu):创建下拉菜单和右键菜单。 4. 表单组件...

    2个treepanel相互切换

    TreePanel是许多UI框架,如ExtJS、GXT(Sencha GWT)等中用于呈现树形结构数据的组件。在本文中,作者可能探讨了如何在用户交互时从一个TreePanel平滑地过渡到另一个,以提供更好的用户体验。 TreePanel通常用于...

    如何使用ext写的树形菜单

    - 数据加载性能:大量数据可能导致性能问题,应考虑分页和异步加载。 - 响应式设计:确保树形菜单在不同屏幕尺寸和设备上都能良好显示和操作。 - 错误处理:对用户操作和数据加载错误进行恰当的提示和处理。 ...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    13.4.htm 直接对XML文档进行添加、删除和显示数据的操作 13.5.js Mozilla 浏览器中xml的应用 13.5.xml 简单的xml文件 13.6.htm 格式化输出xml文件 13.7.htm 一个添加/删除...

Global site tag (gtag.js) - Google Analytics