`

Ext 的分页数据无法显示,却仅是一个单引号没加上去,让我郁闷了两天

    博客分类:
  • Ext
阅读更多

一,代码使用:Spring+struts+hibernate+ext实现

1,Action代码,后台处理数据:

//分页设置
	public ActionForward pageSet(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		PageModel pageModel = customerManager.allCustomers();
		int start;
		int limit;
		int total = pageModel.getTotal();
		String json =null;  //构造json形式 json = {id:"id",root:[{sn:'',name:''},{}]}数据
		try{
			start = Integer.parseInt(request.getParameter("start").toString());
			limit = Integer.parseInt(request.getParameter("limit").toString());
			List datas = pageModel.getDatas();
			
			json = "{totalProperty:"+total+",root:[";
			
			if (start + limit < total) { // start是从0开始的
				for (int i = start; i < start + limit; i++) {// 可能有IndexOutOfBoundsException,数据越界,需if条件处理。
					Customer customer = (Customer) datas.get(i);
					json += "{sn:'" + customer.getSn() + "',name:'"
							+ customer.getName() + "',evaluation:'"
							+ customer.getEvaluation() + "',source:'"
							+ customer.getSource() + "',createTime:'"
							+ customer.getCreateTime() + "'}";
					if (i != limit + start - 1) {
						json += ",";
					}
				}
			}
			else {
				for (int i = start; i < total; i++) {// 可能有IndexOutOfBoundsException,数据越界,需if条件处理。
					Customer customer = (Customer) datas.get(i);
					json += "{sn:'" + customer.getSn() + "',name:'"    // 必须符合json的格式,不然也无法显示数据
							+ customer.getName() + "',evaluation:'"
							+ customer.getEvaluation() + "',source:'"
							+ customer.getSource() + "',createTime:'"
							+ customer.getCreateTime() + "'}";
					if (i != total - 1) {
						json += ",";
					}
				}
			}
			json+="]}";
			response.setContentType("text/json;charset=GBK"); //json格式乱码处理 
			response.getWriter().write(json);
			response.getWriter().close();
			//关闭数据流,未关闭有些情况下会导致无法加载显示数据
		}catch(Exception e) {
			e.printStackTrace();
		}
		return null;

	}

 注意:

json += "{sn:'" + customer.getSn() + "',name:'"
       + customer.getName() + "',evaluation:'"
        + customer.getEvaluation() + "',source:'"
        + customer.getSource() + "',createTime:'"
       + customer.getCreateTime() + "'}";

就这里的单引号没加上去,让我郁闷了两天,才解决,汗

符合json格式:

   json={id:'id',totalProperty:'totalProperty',root:[{sn:'XX',name:'XX'},{}}

所以这里要注意别忘了单引号,而且不能在json两边多加了[],中括号;

下列代码,注重

var store = new Ext.data.Store({
proxy:new Ext.data.HttpProxy({url:"../customer.do?method=pageSet"}),//回到跟目录下
    reader:new Ext.data.JsonReader({
          totalProperty:'totalProperty',
          root:'root',
          successProperty :'success'
          },fields),  //List数据
,其他没什么变化。

2,js代码

Ext.onReady(function(){	
	
	// 格式化日期显示
    function formatDate(value){
        return value ? value.dateFormat('Y, M d') : '';
    }
   
    //获得总记录数
//     var total;
//     JCustomerManager.allCustomers(function(data) {
//	    total = data.total;
//     });
//     alert(total);
    var fields = Ext.data.Record.create([
           {name: 'sn', type: 'string' },
           {name: 'name', type: 'string'},
           {name: 'evaluation', type: 'string'},
           {name: 'source', type: 'string'},     //客户来源
           {name:'createTime',type:'date', dateFormat: 'Y/m/d'}
          ]);
    // dataIndex 将特定的列映射到数据源(Data Store)中的数据列
    //定义勾选框,不需要可以不定义
    var sm = new Ext.grid.CheckboxSelectionModel();
    var cm = new Ext.grid.ColumnModel([
    	new Ext.grid.RowNumberer(),//增加自动编号,不需要可不定义
    	sm,                        //勾选框,不需要可不定义
    	{
    	   id:'sn',
           header: "编号",
           dataIndex: 'sn'
          // width:50
        },
		{
           id:'name',
           header: "客户名称",
           dataIndex:'name',
         //  width:50,
           editor: new Ext.form.TextField({
               allowBlank: false// 不能为空
           })
        },
        {
           id:'evaluation',
           header: "价值评估",
           dataIndex: 'evaluation',
           width:70,
           editor: new Ext.form.TextField({
               allowBlank: false// 不能为空
           })
        },
        {
           id:'source',
           header: "客户来源",
           dataIndex: 'source',
           width:70,
           editor: new Ext.form.ComboBox({
           		//transform:"sourceList",  //所对应的下拉菜单名称<select name="sourceList"><option></option></select>
           		triggerAction:"all",
           		lazyRender:true
           })
        },
        {
           header: "录入时间",
           dataIndex: 'createTime',
           width: 95,
           renderer: formatDate,   //格式化时间
           //rnderer:Ext.util.Format.dateRenderer("Y, M d"),
           editor: new Ext.form.DateField({
                format: 'y/m/d',
                minValue: '1970/01/01',//最小值
                disabledDays: [0, 6],// 禁止选择的日期
                disabledDaysText: '非上班时间不可录入' })
        }
    ]);		
    
    var store = new Ext.data.Store({
	proxy:new Ext.data.HttpProxy({url:"../customer.do?method=pageSet"}),//回到跟目录下
    	reader:new Ext.data.JsonReader({
    	      totalProperty:'totalProperty',
    	      root:'root',
    	      successProperty :'success'
    	      },fields),  //List数据
        sortInfo:{field:'name', direction:'ASC'},// 排序信息
        remoteSort:true
    });
       // 默认情况下列是可排序的  	
    cm.defaultSortable = true;
    // 创建编辑器表格
    var grid = new Ext.grid.EditorGridPanel({
        store:store,
        cm: cm,
        width:800,
        height:420,
        //autoExpandColumn:'name',  //根据用户自动填充表格
        title:'客户信息管理',// 标题
        frame:true,
        clicksToEdit:1,//设置点击几次才可编辑
        //设置勾选按钮://true单选,false多选
     	sm:sm, 
        //工具栏
        tools:[{id:"save"},
        	   {id:"help",
        	   	handler:function(){Ext.Msg.alert("help","please help me!");}
        	   },{id:"close"}],
        // 顶部工具栏按钮
        tbar: [{
            text: '添加用户',
			iconCls:'add',//按钮图标的CSS名称
            handler : function(){      
            }
        },{
            text: '查看所选',
			iconCls: 'details',
            handler : function(){
            }
        },{
            text: '删除所选',
			iconCls:'remove',
            handler : function(){
            }
        },{
            text: '删除所有',
			iconCls: 'user-delete',
            handler : function(){
            }
        },{
            text: '检索中心',
			//iconCls: 'user-delete',
            //viewConfig 属性来打开一个新的面板
            handler : function(){
            }
        },{
            text: '刷新',
			//iconCls: 'user-delete',
            pressed:true,
            handler : function(){
            }
        }],
        // 底部工具栏按钮
        bbar:new Ext.PagingToolbar({
        	pageSize:15,   //每页显示的长度
        	store:store,
        	displayInfo:true,
        	displayMsg:"当前{0}到{1}共{2}",
        	emptyMsg:"没有数据请返回",
        	items:null
        })
    });
    grid.render(mydiv);
    store.load({params:{start:0,limit:15}});
  
});

 
 3,jsp页面

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<script type="text/javascript" src="../dwr/engine.js"></script>
<script type="text/javascript" src="../dwr/util.js"></script>
<script type="text/javascript" src="../dwr/interface/JCustomerManager.js"></script>
<script type="text/javascript" src="../ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../ext/ext-all.js"></script>
<!-- 手工添加dwrproxy.js -->
<script type="text/javascript" src="../ext/dwrproxy.js"></script>
<script type="text/javascript" src="../script/edit_grid_customer.js"></script>
<!--注意要从根目录看起,这里目录需要回退 -->
<link rel="stylesheet" type="text/css" href="../ext/resources/css/ext-all.css"/>
<link rel="stylesheet" type="text/css" href="../style/edit_grid_customer.css"/>

<title>Insert title here</title>
</head>
<body>
<div id="mydiv" style="width: 100%;height: 100%"></div>
</body>
</html>

 

分享到:
评论
1 楼 ygswine 2009-08-23  
excellet article

相关推荐

    ext grid json分页显示

    在IT领域,尤其是在Web开发中,"ext grid json分页显示"是一个常见的需求,它涉及到前端数据展示和后端数据交互的关键技术。本例中提到的解决方案是利用DWR(Direct Web Remoting)和EXT.js库来实现。下面将详细阐述...

    EXT分页工具条

    EXT分页工具条是一款在Web应用中常用的组件,主要用于展示数据集的分页信息,让用户能够方便地浏览大量数据。EXT是一个强大的JavaScript框架,它提供了丰富的UI组件和数据管理功能,使得开发人员能够构建高性能、...

    ext分页客户端demo Java js

    EXTJS中的分页组件主要由Ext.grid.Panel和Ext.data.Store两个核心部分构成。Ext.grid.Panel是数据展示的网格组件,而Ext.data.Store则负责管理数据,包括加载、缓存和分页功能。 1. **EXTJS分页组件**: - **Ext....

    Ext_Js分页显示案例详解

    其中,分页显示是一个常用的功能,在处理大量数据时尤其重要。本文将详细解析Ext_Js中的分页显示原理,并通过一个具体的案例来展示其实现过程。 #### 二、Ext_Js分页显示原理 分页显示的核心在于如何有效地处理和...

    EXT树表分页(SERVLET)

    在EXT中,树(Tree)和表格(Grid)是两种重要的数据展示组件,它们可以单独使用,也可以结合成树表(TreeGrid)以同时展示层次结构和表格数据。 在EXT树表中,分页(Pagination)是一项关键功能,用于处理大量数据...

    ext分页查询ext分页查询ext分页查询ext分页查询ext分页查询

    2. **分页插件(Paging Toolbar)**:当与数据存储结合使用时,分页工具栏(`Ext.PagingToolbar`)可以在底部显示页码导航,允许用户切换页面。它需要配置`store`属性来引用数据存储,并通过`displayMsg`和`emptyMsg...

    Ext分页排序 Ext分页排序

    ExtJS 是一个强大的JavaScript 库,用于构建交互式的Web应用程序,尤其在数据网格、表格和分页处理方面表现卓越。在ExtJS中,分页排序是实现大规模数据展示的重要功能,它允许用户在大量数据中高效地浏览和管理信息...

    Ext中对于多种store数据分页实现示例

    客户端分页适用于数据量不大,且可以一次性加载到内存中的场景,而服务器端分页则适合处理大数据量的情况,它通过与服务器交互仅加载当前页的数据。 1. **客户端分页(Client Paging)** 在客户端分页中,所有的...

    Ext.Net 服务器端分页 存储过程

    在Ext.NET中,当用户滚动数据网格或改变分页控件时,框架会发送一个请求到服务器,包含当前页数和每页记录数。服务器根据这些参数查询数据库,仅返回所需的数据块,然后将这些数据渲染到客户端的网格中。这样可以...

    EXT 分页,树形结构案列

    EXT 分页与树形结构是EXT JavaScript框架中的两种核心特性,它们在开发高效、互动性强的Web应用程序时扮演着重要角色。EXT是一个强大的客户端JavaScript库,用于构建富互联网应用程序(RIA)。在这里,我们将深入...

    ext4 表格分页实例代码

    EXT4虽然主要关注的是文件系统,但EXT4在这里可能是指EXT JS库的一个版本,EXT JS是一个强大的JavaScript UI框架,用于构建富客户端应用。EXT JS提供了丰富的组件,包括表格(Grid),支持分页功能,便于处理大量...

    Asp.Net Ext.Net 存储过程分页 只读取当前页数据

    在Asp.Net开发中,Ext.Net是一个强大的JavaScript库,它为.NET开发者提供了丰富的用户界面组件,使得构建富客户端Web应用程序变得更加便捷。本示例主要关注的是如何利用Ext.Net实现存储过程分页,以提高应用程序的...

    简单的小例子Ext+servlet 分页

    在IT行业中,分页是一种常见的数据展示技术,特别是在网页应用中,用于处理大量数据的显示。本示例探讨了如何结合Ext JS(一个强大的JavaScript框架)和Servlet(Java Web开发中的服务器端组件)来实现简单的分页...

    Ext实现分页查询,前台

    此外,还创建了两个额外的`Store`对象,`resourceType`和`languageType`,它们分别用于获取资源类型列表和语言类型列表,同样使用`XmlReader`读取器,并且加载数据。 在创建`GridPanel`时,这是用于展示数据的组件...

    ext grid 显示数据

    "ext grid 显示数据"这一主题,是深入理解EXT JS开发的关键知识点之一,特别是在处理表格和列表展示时。在"LearningExtJS 第五章节的翻译"中,我们可以期待找到关于EXT JS Grid的详细讲解和实例应用。 EXT JS的Grid...

    分页EXT分页EXT

    在IT行业中,分页是一种常见的数据展示技术,特别是在网页应用和数据库管理中。"EXT"通常指的是EXTJS,这是一个强大的JavaScript框架,用于构建富客户端Web应用程序。EXTJS提供了丰富的组件库,其中包括用于实现分页...

    EXT2.0动态树,分页!

    动态树结构是EXT2.0中的一个重要特性,它允许用户交互地展开和折叠节点,以显示或隐藏数据层次。这种结构通常用于表示层次化的数据,例如文件系统、组织架构或菜单导航。EXT2.0通过异步加载数据来实现动态性,只在...

    Ext 分页核心代码

    在Ext JS这个强大的JavaScript框架中,分页是数据展示中不可或缺的一部分,特别是在处理大量数据时。本篇将深入探讨Ext分页的核心代码及其工作原理,帮助你理解和实现高效的分页功能。 1. **Ext Grid Panel与分页**...

    Ext2.2.GridPanel分页处理+dwrproxy(js对象和json两种数据)

    我们将关注两个数据格式:JavaScript对象(JS对象)和JSON。 首先,Ext2.2的GridPanel是用于展示数据的组件,具有强大的功能,如排序、分组、筛选等。分页功能可以通过配置`pagingToolbar`实现,它提供了一种用户...

    EXT JSON Sqlserver 分页 全部正常运行

    在IT领域,这个标题涉及到的是一个使用EXT JS(一种基于JavaScript的富客户端框架)和JSON(JavaScript Object Notation)数据格式,结合SQL Server数据库实现分页功能的示例。EXT JS允许开发者创建复杂的、交互式的...

Global site tag (gtag.js) - Google Analytics