`
aa00aa00
  • 浏览: 331475 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

Ext Js分页显示示例原理详解

阅读更多

前几天我们项目组讨论给**公司关于**产品做一个功能展示的用例。讨论到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>

分享到:
评论

相关推荐

    Ext-Js分页示例代码详解.pdf

    下面将详细解释EXT JS分页的原理及其在示例代码中的应用。 首先,EXT JS的分页组件是建立在Grid Panel基础上的,通过配置Store和Pager组件来实现。在给定的示例中,EXT JS与Struts2框架结合,使用MVC模式处理请求和...

    Ext MVC 项目示例

    **EXT MVC 项目示例详解** EXT MVC 是 Sencha Ext JS 框架的一个关键特性,它是基于模型-视图-控制器(Model-View-Controller)设计模式的应用开发架构。这个模式将应用程序的不同部分分离,使得代码更易于管理和...

    Jquery页面分页

    **jQuery页面分页详解** 页面分页是网页开发中常用的一种技术,特别是在处理大量数据时,为了提高用户体验,避免一次性加载过多内容导致页面卡顿。jQuery作为一种轻量级的JavaScript库,提供了简单易用的API,使得...

    EXT-js-中文手册

    ### EXT-js-中文手册知识点概览 #### 1. EXT简介 - **定义与背景**:EXT是一款基于JavaScript的开源框架,它简化了Web应用程序的开发过程,特别是那些需要复杂用户界面的应用。EXT最初由Jack Slocum创建,并在之后...

    Ext2 核心 API 中文详解 ExtJS2.0实用简明教程 ExtJS2.0教程 ExtJS2.0实用简明教程(easyjf) ext中文API+ sample

    8. **Ext.LoadMask**: 载入遮罩,用于在执行耗时操作时显示等待提示。 **三、ExtJS 2.0教程内容** 1. **基础篇**: 介绍ExtJS的基本架构和使用环境,讲解如何创建第一个ExtJS应用。 2. **组件篇**: 详述各组件的...

    ext文档 和实例

    在IT领域,EXT是一个强大的JavaScript库,主要用于构建富客户端Web应用程序。它提供了丰富的用户界面组件,如表格(Grid)、表单(Form)等,以及一套完整的数据管理和远程通信机制。以下将详细介绍EXT中的"form"、...

    ext.net.pro.1.2.full.source

    开发者可以通过阅读这些源代码,深入了解EXT.NET控件的工作原理,学习如何利用.NET Framework和JavaScript进行混合编程。例如,可以研究`GridPanel`的实现,了解如何处理数据源、排序、分页和过滤等功能;或者探索`...

    深入浅出Ext 光盘源码

    **深入浅出Ext光盘源码详解** EXT是一个基于JavaScript的富客户端开发框架,由Sencha公司开发。它主要用于构建高性能、交互式的Web应用程序,尤其适合企业级的B/S系统。EXT提供了大量的UI组件,包括表格、表单、树...

    ExtJS 3.2的中文参考手册

    - **分页栏 (Toolbar)**: 可以通过配置Grid的底部工具栏来实现分页功能,例如:`grid.bbar = new Ext.PagingToolbar({ store: store, displayInfo: true, displayMsg: '显示 {0} - {1} 条记录,共 {2} 条记录', ...

    EXTJS经典教程

    - **Grid布局**:专门用于Grid组件的布局管理,支持数据的分页显示等高级特性。 - **表单组件**: - **表单结构**:介绍如何创建表单框架,包括字段布局、验证规则等。 - **表单字段创建**:指导如何添加不同...

    ExtJS中文手册.pdf

    - **EXT源码概述**:源码部分详细介绍了EXT的核心架构及组件设计原理。对于想要深入学习EXT内部机制的开发者来说非常有价值。 - **揭示源代码**:源码分析帮助理解EXT如何实现其功能。 - **发布Ext源码时的一些...

    ExtJs中文教程

    1. **分页原理** - 解释分页的基本概念和实现方式。 2. **从服务器获取数据** - 展示如何通过Ajax请求从服务器端获取当前页的数据。 3. **创建分页ComboBox** - 实现一个带有分页功能的下拉列表框。 #### 十三、...

    Coolite 1.0 Preview 加 Example源码 1.0.0.34580

    - **Grid 示例**:展示了如何使用 Coolite 创建数据网格,包括数据加载、排序、分页、编辑等功能。 - **Form 示例**:包含了表单组件的使用,如文本框、下拉框、复选框等,以及表单验证和数据提交的实现。 - **Tree ...

    掏钱学extjs完全版

    教程中的"ext2.0js"文件包含了EXTJS 2.0的核心库,开发者可以边学习边实践。同时,"extjs2.0例子"提供了示例代码,有助于理解和应用所学知识。 通过深入学习"掏钱学EXTJS完全版",开发者不仅能掌握EXTJS 2.0的核心...

Global site tag (gtag.js) - Google Analytics