gridpanel分页问题困惑我一段时间了,参考了很多文档但遇到的问题还是很多主要有:
1、机制问题,extjs分页的机制是向后台传送两个参数start,limit,start是数据开始的地方,limit是每页的大小,所以说limit设定好以后一般情况是不变的。比方说每页两条数据的话,第一次start=0 limit=2第二次start=2 limit=2,开始我的理解是有错误的
2、数据库的问题。我才用的是ssh+extjs+access的模式,在dao层用到的是spring提供的hibernatetemplate的findByExample(entity,start,limit),的方法,发现无法执行,这个问题没有很好地解决,后台sql语句用到的是select ..from .. where recon>?我猜想access不支持这种模式,解决的方法是把数据查询出来以后对list结果集,采用sublist(start,start+limit)的方法获得。
3、totalPoperty的属性一定要配置。
4、对最后一页的处理,后台要进行对应的判断,不然前台显示不正常。
能回忆得这么多了
extjs代码
SavedPanel = Ext.extend(Ext.Panel,{
savedGrid:null,
constructor:function() {
this.savedGrid = new SaveGridPanel();
SavedPanel.superclass.constructor.call(this,{
renderTo:"savedpanel",
frame:true,
width:800,
height:300,
items:[this.savedGrid]
});
}
});
/****************************************************************************************************/
SaveGridPanel = Ext.extend(Ext.grid.GridPanel,{
mystore:null,
constructor:function() {
this.mystore = new SavedStore();
SaveGridPanel.superclass.constructor.call(this,{
store:this.mystore,
/*new Ext.data.JsonStore({
autoDestroy:true,
autoLoad:true,
url:"http://139.28.96.10:8080/premanagement3/secure/findDocuments!findDocument",
storeId:"documentGrid",
root:"documents",
fields:[{
name:"title",
mapping:"title"
},{
name:"dtime",
mapping:"dtime"
},{
name:"person",
mapping:"person.name"
},{
name:"department",
mapping:"person.department.name"
}]
}),*/
colModel:new Ext.grid.ColumnModel({
defaults:{
width:120,
sortable:true
},
columns:[{
header:"主题",
dataIndex:"title"
},{
header:"申请人",
dataIndex:"person"
},{
header:"部门",
dataIndex:"department"
},{
header:"时间",
dataIndex:"dtime"
}]
}),
viewConfig:{
forceFit:true
},
sm:new Ext.grid.RowSelectionModel({singleSelect:true}),
width:600,
height:200,
frame:true,
title:"已保存的申请",
bbar:new Ext.PagingToolbar({
store:this.mystore,
pageSize:2,
displayInfo:true,
displayMsg:"第{0}条到{1}条,一共{2}条"
})
});
}
});
/***************************************************************************************************************/
SavedStore = Ext.extend(Ext.data.JsonStore,{
constructor:function() {
SavedStore.superclass.constructor.call(this,{
proxy:new Ext.data.HttpProxy({method:"GET",
url:"http://139.28.96.10:8080/premanagement3/secure/findDocuments!findDocument"
}),
autoLoad:{params:{start:0,limit:2}},
storeId:"documentGrid",
root:"documents",
totalProperty:"total",
fields:[{
name:"title",
mapping:"title"
},{
name:"dtime",
mapping:"dtime"
},{
name:"person",
mapping:"person.name"
},{
name:"department",
mapping:"person.department.name"
}]
});
}
});
action层代码
package com.clds.action;
import java.util.List;
import java.util.Map;
import com.clds.model.Document;
import com.clds.model.Person;
import com.clds.service.DocumentService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DocumentAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private Document document;
private List<Document> documents;
private DocumentService documentService;
private Boolean success;
private int start;
private int limit;
private int total;
public DocumentAction() {
}
@Override
public String execute() throws Exception {
/**//*System.out.println(this.document.getDtext());
System.out.println(this.document.getDtime());
System.out.println(this.document.getTitle());
System.out.println(this.document.getPerson().getId());
*/
this.documentService.saveDocument(document);
this.success = true;
return SUCCESS;
}
public String findDocument() throws Exception {
Map session = ActionContext.getContext().getSession();
Person person = (Person)session.get("users");
int departmentId = (Integer)session.get("departmentId");
this.document = new Document();
this.document.setDepartmentid(departmentId);
List<Document> d= this.documentService.findDocuments(document,start,limit);
this.total = d.size();
System.out.println(this.total);
System.out.println(d.isEmpty());
int maxResult = 0;
if ((start+limit)<total) {
maxResult = start+limit;
}else {
maxResult = total;
}
this.documents = d.subList(start, maxResult);
return SUCCESS;
}
public Document getDocument() {
return document;
}
public void setDocument(Document document) {
this.document = document;
}
public DocumentService getDocumentService() {
return documentService;
}
public void setDocumentService(DocumentService documentService) {
this.documentService = documentService;
}
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public List<Document> getDocuments() {
return documents;
}
public void setDocuments(List<Document> documents) {
this.documents = documents;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
}
分享到:
相关推荐
本话题将深入探讨如何在Ext2.2中使用GridPanel进行分页处理,并结合DWR(Direct Web Remoting)代理来实现数据的异步加载。我们将关注两个数据格式:JavaScript对象(JS对象)和JSON。 首先,Ext2.2的GridPanel是...
而TreePanel的更新也是一个比较常见的问题,当我们点击测试按钮时,TreePanel会请求远程服务器的资源,重新刷新树,从而达到动态更新树的效果,这在实际开发中是非常有用的。 阅读对象:本中心需要使用Ext框架开发的...
在本文中,我们将深入探讨如何扩展ExtJS的GridPanel组件,以实现带有分页和选中状态的功能。ExtJS是一个强大的JavaScript库,用于构建富客户端应用程序,而GridPanel是其核心组件之一,用于展示和操作表格数据。通过...
GridPanel是EXTJS中的一个核心组件,它允许开发者以网格形式展示数据,支持多种功能,如排序、分页、筛选、编辑等。在EXTJS中,GridPanel通常与Store结合使用,Store负责管理数据,而GridPanel则负责显示这些数据。 ...
- 配置 `GridPanel` 的其他属性,如高度、宽度、是否有分页等。 - 将 `GridPanel` 添加到相应的容器,例如 `Ext.Net.Panel` 或 `Ext.Net.Window`。 2. **显示在各种窗口中**: GridPanel 可以被嵌入到不同类型的...
扩展的GridPanel,让其分页后保持选择状态
`gridPanel`在诸如ExtJS、GWT或PrimeFaces等框架中常见,它们提供了丰富的功能来处理表格数据,包括排序、筛选、分页等。 首先,让我们了解`gridPanel`的基本结构。`gridPanel`由多个部分组成,如头部(header)、...
GridPanel则是ExtJS中的表格视图组件,它可以展示大量的数据,并提供排序、筛选、分页等功能。在集成TreePanel和GridPanel时,可能涉及到的概念有:将TreePanel的节点与GridPanel的数据关联,实现点击树节点时动态...
在ExtJs中,GridPanel是用于展示数据的常用组件,它可以提供丰富的功能,如排序、分页、筛选等。在实际应用中,我们经常需要监听用户的交互行为,比如双击行进行进一步的操作。本篇文章将深入讲解如何在ExtJs ...
ExtJS表格面板(GridPanel)是Sencha Ext JS框架中的一个核心组件,它用于展示大量结构化数据。在本文中,我们将深入探讨如何创建并使用一个完整的ExtJS GridPanel实例,以及与其相关的源码和工具。 首先,让我们...
博客链接 <https://zxf-noimp.iteye.com/blog/629829> 可能提供了更深入的示例和讲解,包括 GridPanel 的实际应用和可能遇到的问题。通过阅读这篇博客,开发者可以更好地理解如何在 ExtJS 应用中有效地使用 ...
2. **性能优化**:对于大数据量的情况,考虑使用分页、懒加载等技术来提升性能。 3. **用户体验**:提供清晰的反馈信息,如加载指示器、错误提示等,以增强用户体验。 4. **兼容性**:测试不同浏览器下的表现,确保...
在EXTJS框架中,Gridpanel是用于展示数据的常用组件,它提供了丰富的功能,如排序、分页、筛选等。当我们需要对数据进行更复杂的展示,例如按类别或层级分类时,多表头(Multi-Level Headers)就显得尤为重要。标题...
`GridPanel`定义了列(columns)和数据存储(store),以及分页工具栏(bbar)。分页工具栏通过`PagingToolbar`创建,设置了每页显示的条数(pageSize),并关联了数据存储(store),以便根据用户操作更新分页状态...
在EXTJS开发中,GridPanel是核心组件之一,它用于展示结构化的数据,通常带有分页、排序和过滤功能。当用户需要将GridPanel中的数据打印出来时,我们就需要实现“GridPanel打印”功能。 首先,EXTJS提供了`Ext.grid...
EXT分页工具条通常与EXT的GridPanel或DataView等数据展示组件配合使用。它包含一系列按钮和输入框,如“上一页”、“下一页”、“跳转到第X页”、“每页显示X条”等,用于控制数据的分页显示。EXT内部通过Store对象...
Extremecomponents提供了分页组件,如PagingToolbar,它可以方便地与GridPanel结合使用,实现数据的分页展示。配置分页组件主要涉及设置每页显示的数据量(pageSize)以及连接后台服务获取数据的URL(url)。 接着...
它具备分页、排序、过滤、编辑等功能,适用于显示大量结构化数据。GridPanel的构建通常包括以下几个步骤: 1. 定义数据模型(Model):这是GridPanel的基础,用于定义数据字段及其类型,例如`Ext.data.Model`。 2....
在给定的"ExtJs GridPanel延时加载.rar"文件中,主要涉及的核心概念是ExtJs中的GridPanel组件以及延时加载技术。GridPanel是ExtJs中一个非常重要的组件,它用于展示表格数据,而延时加载则是一种优化大量数据处理的...