extjs分页
来源:互联网 发布:王者荣耀unity源码 编辑:程序博客网 时间:2024/04/27 15:59
前几天我们项目组讨论给**公司关于**产品做一个功能展示的用例。讨论到view层时,用那种框架。最终选中了大名鼎鼎的EXT JS 框架来做view。这里的view涉及的不是很复杂。因为它仅仅是个Demo。最常用的就是分页显示数据了。目前extjs仅仅支持xml和json两种格式的数据展现。就性能而言。Extjs不可能用于较大的项目。性能确实不敢恭维。这里我们仅仅简单的介绍一下它的分页原理。其实他的源码中提供了大量的例子。可以参考一下。该例子就是基于它的官方例子实现的。目前,市场是比较流行的数据关于extjs就是“深入浅出extjs“了,该书编写的却是不怎么样。如果想学习extjs,最好研究研究它的源码的例子就行了。
Jar包如下:
其中json-lib-2.2.1-jdk1.5.jar xstream-1.3.jar是转换集合类型转换json类型的主要jar包。
测试工程的包路径如下:
该示例是用strus2做的mvc。
action类:
package action;
import bean.Bean;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
import util.ExtHelper;
public class DisplayAction extends ActionSupport
{
private static final Log log=LogFactory.getLog(DisplayAction.class);
private static final long serialVersionUID = 1L;
private HttpServletResponse response;
private HttpServletRequest request;
private int start;
private int limit;
//表示数据库中数据总条数,用户分页显示
private static final long totalResult=100;
public String display() throws Exception
{
List list=new ArrayList();
for(int i=0;i<5;i++){
bean.Bean bean=new Bean();
bean.setId(i);
bean.setDetail("detil"+i);
bean.setTitle("title"+i);
list.add(bean);
}
String json = ExtHelper.getJsonFromList(totalResult,list);
log.info("list转换成json格式的数据开始");
log.info(json);
response = ServletActionContext.getResponse();
response.setContentType("application/xml;charset=UTF-8");
response.getWriter().write(json);
return null;
}
}
Po类:
package bean;
public class Bean {
private int id;
private String title;
private String detail;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
}
ExtHelper类:
package util;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONObject;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class ExtHelper {
/**
*list转换成xml
*/
public static String getXmlFromList(long recordTotal , List beanList) {
Total total = new Total();
total.setResults(recordTotal);
List resultlist = new ArrayList();
resultlist.add(total);
resultlist.addAll(beanList);
XStream sm = new XStream(new DomDriver());
for (int i = 0; i < resultlist.size(); i++) {
Class c = resultlist.get(i).getClass();
String b = c.getName();
String[] temp = b.split("//.");
sm.alias(temp[temp.length - 1], c);
}
String xml = "<?xml version=/"1.0/" encoding=/"utf-8/"?>/n" + sm.toXML(resultlist);
System.out.println("**********************************"+xml);
return xml;
}
/**
*list转换成json
*/
public static String getJsonFromList(long recordTotal , List ListbeanList){
TotalJson total = new TotalJson();
total.setResults(recordTotal);
total.setItems(ListbeanList);
JSONObject JsonObject = JSONObject.fromObject(total);
return JsonObject.toString();
}
}
TotalJson类:
package util;
import java.util.List;
public class TotalJson {
private long results;
private List items;
public List getItems() {
return items;
}
public void setItems(List items) {
this.items = items;
}
public long getResults() {
return results;
}
public void setResults(long results) {
this.results = results;
}
}
Struts.xml
<!DOCTYPE struts PUBLIC '-//Apache Software Foundation//DTD Struts Configuration 2.0//EN'
'http://struts.apache.org/dtds/struts-2.0.dtd'>
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<package name="ext_fenye" extends="struts-default">
<action name="getDataList" class="action.DisplayAction" method="display"></action>
</package>
</struts>
JSP:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html>
<head>
<title>ExtJs-FenYe</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/pagesExt/ext-2.2.1/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/pagesExt/css/style.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/pagesExt/ext-2.2.1/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/pagesExt/ext-2.2.1/ext-all.js"></script>
<script type="text/javascript" src=""${pageContext.request.contextPath}/pagesExt/ext-2.2.1/ext-all-debug.js"> </script>
</head>
<script type="text/javascript">
Ext.onReady(function(){
//定义数据集对象
var typeStore = new Ext.data.Store({//配置分组数据集
autoLoad :{params : {start:0,limit : 6}},
//默认加载参数:start=0,limit=6
reader: new Ext.data.JsonReader({
totalProperty: "results",
root: "items",//和action的list的名称一致。
id: "id"
},
Ext.data.Record.create([
//对一个po的属性名称
{name: 'id'},
{name: 'title'},
{name: 'detail'}
])
),
proxy : new Ext.data.HttpProxy({
//URL:struts.xml中配置该action
url : 'getDataList.action'
})
})
//分页工具栏
var pagingBar = new Ext.PagingToolbar({//分页工具栏
store : typeStore,
pageSize :6,//每页显示的条数。用于系统自动计算它的start值
displayInfo : true,
displayMsg : '数据从第{0}条 - 第{1} 条 共 {2}条数据',
emptyMsg : "没有记录"
})
//创建Grid表格组件
var cb = new Ext.grid.CheckboxSelectionModel()
var bookTypeGrid = new Ext.grid.GridPanel({
applyTo : 'grid-div',//定位到id=“grid-div”
frame:true,
store: typeStore,//与前面定义的数据存储器名称一致
width:580,
height:400,
viewConfig : {
autoFill : false
},
sm:cb,
columns: [//配置表格列
new Ext.grid.RowNumberer({
header : '行号',
width : 50
}),//表格行号组件
cb,
{header: "编号", width: 50, dataIndex: 'id', sortable: true},
{header: "名称", width: 150, dataIndex: 'title', sortable: true},
{header: "说明", width: 250, dataIndex: 'detail', sortable: true}
],
//分页工具栏
bbar: pagingBar//分页引用,作为button。前面有定义
})
});
</script>
<body>
<div id='grid-div'/>
</body>
</html>
- extjs分页
- extjs分页
- ExtJs分页
- ExtJs分页
- Extjs分页
- extjs分页
- extjs分页以及查询分页
- Extjs 前台分页(假分页)
- EXTJS分页技术
- extjs分页2
- ExtJs combo设置分页
- ExtJs 中GridPanel分页
- ExtJS 分页技术
- Extjs的分页
- extjs combobox分页查询
- ExtJS中GridPanel分页
- Extjs中实现分页
- ExtJS中Grid分页
- 微软,Google面试题 (9) —— 查找链表的倒数第K个节点
- 【我的第一篇android博客】教育网中使用repo下载android源代码
- 性能测试监控 -- jprofile 监控 weblogic
- 将Xml 文件转换为 视图
- 一个完整的extjs的GridPanel例子
- extjs分页
- GridPanel显示
- extjs分页2
- Stored procedure & Sql Injection
- 在 CentOS 5.0 中安装 RPMforge 安装源(翻译)
- 软件风云
- 于丹教授50句关于人性的总结
- 测试
- 最近联通iPhone4上市时间确认