`
finally_m
  • 浏览: 66979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(十二) 表格分页及与服务器交互

    博客分类:
  • AJAX
阅读更多

(3) 表格分页
 一次性将成千上万条数据显示在Grid里,然后拖动滚动条查看数据,显然不是什么好主意,在效率上也是不允许的。实际上,Grid控件对性能的要求较高。如果在一个页面上放3个Grid,就可以感觉到响应变慢。如果在每个Grid里显示上千条数据,效率就可想而知了。所以说分页是必不可少的,而EXT提供了方便的集成分页工具条的方式。

下面看一个完整的分页示例:
首先完成一些后台的准备工作,包括数据库表,DAO等。
Student表结构如下:
CREATE TABLE `student` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  `age` int(2) NOT NULL,
  `gender` char(1) NOT NULL,
  `email` varchar(50) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name_index` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

其它类略

page.html
<html>
  <head>
    <title>page.html</title>
 
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="ext2/resources/css/ext-all.css" />
    <script type="text/javascript" src="ext2/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="ext2/ext-all.js"></script>
    <script type="text/javascript" src="ext2/build/locale/ext-lang-zh_CN.js"></script>
 <script type="text/javascript" src="page.js" charset="gbk"></script> 
  </head>
  <body>
    <div id="grid"></div>
  </body>
</html>

page.js
  Ext.onReady(function(){
     var cm = new Ext.grid.ColumnModel([
         {header:'编号',dataIndex:'id',sortable:true},
         {header:'名称',dataIndex:'name',sortable:true},
         {header:'年龄',dataIndex:'age',sortable:true},
         {header:'性别',dataIndex:'gender',sortable:true},
         {header:'邮箱',dataIndex:'email',sortable:true}
     ]);

     var store = new Ext.data.Store({
      proxy:new Ext.data.HttpProxy({url:'servlet/StudentServlet'}),
         reader: new Ext.data.JsonReader({
          totalProperty:'totalProperty',
          root:'root'
         }, [
             {name: 'id'},
             {name: 'name'},
             {name: 'age'},
             {name: 'gender'},
             {name: 'email'}
         ])
     });

     var grid = new Ext.grid.GridPanel({
         renderTo: 'grid',
         autoHeight: true,
         width:500,
         store: store,
         cm: cm,
         bbar: new Ext.PagingToolbar({
             pageSize: 5,
             store: store,
             displayInfo: true,
             displayMsg: '显示第 {0} 条到 {1} 条记录,共 {2} 条',
             emptyMsg: "没有记录"
         }),
         tbar: new Ext.PagingToolbar({
             pageSize: 5,
             store: store,
             displayInfo: true,
             displayMsg: '显示第 {0} 条到 {1} 条记录,共 {2} 条',
             emptyMsg: "没有记录"
         })
     });
     store.load({params:{start:0,limit:5}});
 });

(4) 与服务器交互
在实际的应用中,表格中的数据一般都是直接存放在数据库表或服务器的文件中。因此,在使用表格控件的时候经常需要与服务器进行交互。ExtJS 使用Ajax 方式提供了一套与服务器交互的机制,也就是可以不用刷新页面,就可以访问服务器的程序进行数据读取或数据保存等操作。比如前面在表格中显示xml 文档中数据的例子中,就是一个非常简单的从服务器端读取数据的例子,再回顾一下代码:
 var store=new Ext.data.Store({
  url: 'test.xml',
  reader:new Ext.data.XmlReader(
   {record:"row"},
   ["id","name","organization","homepage"]
  )
 });

因为Sote 组件接受一个参数url,如果设置url,则ExtJS 会创建一个与服务器交互的Ext.data.HttpProxy 对象,该对象通过指定的Connection 或Ext.Ajax.request 来向服务端发送请求,从而可以读取到服务器端的数据。经验表明,服务器端产生JSon 数据是一种非常不错的选择,也就是说假如服务器的url“student.jsp?cmd=list”产生下面的JSON 数据输出:
{results:[
 {id:1,name:'小王',email:'xiaowang@yahoo.com',sex:'男',bornDate:'1991-4-4'},
 {id:1,name:'小李',email:'xiaoli@yahoo.com',sex:'男',bornDate:'1992-5-6'},
 {id:1,name:'小兰',email:'xiaoxiao@yahoo.com',sex:'女',bornDate:'1993-3-7'}
] }

则前面显示学习信息编辑表格的store 可以创建成下面的形式:
var store=new Ext.data.Store({
 url:"student.jsp?cmd=list",
 reader:new Ext.data.JsonReader({
 root:"result"},
 ["id","name","organization","homepage"])
});

或者:
var store=new Ext.data.JsonStore({
 url:"student.jsp?cmd=list",
 root:"result",
 fields:["id","name","organization","homepage"]
});

其中root 表示包含记录集数据的属性。
如果在运行程序中需要给服务器端发送数据的时候,此时可以直接使用ExtJS 中提供的Ext.Ajax 对象的request 方法。
比如下面的代码实现放服务器的student.jsp?cmd=save 这个url发起一个请求,并在params 中指定发送的Student 对象:
index.jsp
Ext.onReady(function(){
 Ext.get("btn").on("click",function(){
  Ext.Ajax.request({
   url:'student.jsp?cmd=save',
   method:"post",
   success:sFn,
   failure:fFn,
   params:{name:'小李',email:'xiaoli@163.com',bornDate:'1992-5-6',sex:'男'}
  });
 });
 });
function sFn(){
 alert("保存成功");
  }
 function fFn(){
 alert("保存失败");
  }


<input type="button" id="btn" value="ext ajax"/>

student.jsp
<%
 request.setCharacterEncoding("UTF-8");
 String name = request.getParameter("name");
 String sex = request.getParameter("sex");
 String bornDate = request.getParameter("bornDate");
 String email = request.getParameter("email");
 System.out.println("name:"+name);
 System.out.println("sex:"+ sex);
 System.out.println("bornDate:"+bornDate);
 System.out.println("email:"+email);
%>

 

分享到:
评论

相关推荐

    利用vue + element实现表格分页和前端搜索的方法

    本文主要介绍了关于vue + element实现表格分页和前端搜索的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 实现思路 1.前端后台管理会存在很多表格,表格数据过多就需要分页; 2.前端...

    datatables怎么分页

    它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, Foundation ...

    datatables+springmvc+bootstrap实现分页

    它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, ...

    DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)

    它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 主要功能 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, ...

    dhtmlxGridk 中文文档

    智能渲染和分页支持,让这个JavaScript的DataGrid有效地开展工作,甚至与庞大的数据集。 作为一个100%的客户端的JavaScript解决方案,dhtmlxGrid可以集成与任何服务器端技术(PHP,JAVA的Ruby - on – Rails等 )。...

    uikernel:UIKernel是一个全面的React.js UI库,用于基于带有客户端和服务器端验证以及数据绑定的简单统一记录模型来构建表单,可编辑的网格以及具有向下钻取和过滤器的报表。

    但是,它包括与客户端数据一起使用的基本实现示例,以及使用API​​链接服务器和客户端接口的模型。特征数据网格与数据进行交互。 您不仅可以设置网格以显示数据,还可以添加新记录,更新或删除它们。 过滤。 ...

    Jqury基础教程

    7.1.3 服务器端分页 7.1.4 JavaScript分页 7.1.5 完成的代码 7.2 修改表格外观 7.2.1 突出显示行 7.2.2 工具提示条 7.2.3 折迭和扩展 7.2.4 筛选 7.2.5 完成的代码 7.3 小结 第8章 构建功能型表单 8.1 ...

    php网络开发完全手册

    15.3.1 数据库服务器的连接与断开 241 15.3.2 选择数据库 242 15.3.3 执行SQL语句 242 15.3.4 获得查询结果集中的记录数 243 15.3.5 获得结果集中的某一条记录 244 15.3.6 逐行获取结果集中的每一条 15.3.6 记录 245...

    巨渺医学影像工作站查询系统 v2017 网络版.zip

    巨渺医学影像工作站查询系统各工作站站点可以通过连网实现服务器存储病历图像资料,实现各科室查询患者图像报告,也可通过叫号系统实现患者信息的预约登记及分诊,实现科室就诊效率的提高。支持灵活通用的第三方接口...

    中文版Dreamweaver CS4网页制作实用教程》

    6.3.3 链接与导入CSS样式 126 6.4 上机练习 127 6.4.1 新建CSS样式表 127 6.4.2 链接外部样式表 128 6.5 习题 128 第7章 使用超链接和层 129 7.1 超链接的基础知识 129 7.1.1 超链接的概念 129 7.1.2 Dreamweaver中...

    精通AngularJS part1

    第3章与后端服务器通信75 31使用$http进行XHR和JSONP请求75 熟悉数据模型和MongoLabURLs76 $httpAPI快速导览76 配置对象说明77 转换请求数据78 处理HTTP响应79 转换响应数据79 处理同源政策约束79 利用...

    ASP3《高级编程》(第一部分)

    6.1 脚本对象与服务器组件的比较 169 6.2 ASP/IIS可安装组件 171 6.2.1 使用示例页面 172 6.2.2 Content Linking组件 173 6.2.3 Ad Rotator组件 177 6.2.4 Counters组件 182 6.2.5 Browser Capabilities组件 ...

    ASP3《高级编程》(第二部分)

    6.1 脚本对象与服务器组件的比较 169 6.2 ASP/IIS可安装组件 171 6.2.1 使用示例页面 172 6.2.2 Content Linking组件 173 6.2.3 Ad Rotator组件 177 6.2.4 Counters组件 182 6.2.5 Browser Capabilities组件 ...

    Java微服务架构l零从基础到精通高清视频教程全套 163课

    029运行交互式的容器 030后台运行与停止容器 031Docker 客户端帮助命令 032运行 Web 容器 033指定 Web 容器映射端口 034查看容器进程 035查看容器状态 036批量移除容器 037Docker Hub 镜像仓库 038获取镜像 039查找...

    买车网整站源码 v12.rar

    2、改进生成HTML方式,在服务器不支持打开远程文件的情况也可以正常使用,采用ajax交互,更高的效率,更好的用户体验 3、开启静态方式下缓存支持,大大提高了生成HTML的效率 4、更改广告调用方式为JS,同时支持...

    Java微服务架构163课

    149 Solr 全文搜索引擎-Solr 服务器部署 150 Solr 全文搜索引擎-Solr 配置字段域 151 Solr 全文搜索引擎-Solr 维护功能 152 Solr 全文搜索引擎-Solr 查询与高亮显示 153 Solr 全文搜索引擎-Spring Boot 集成 ...

    jQuery LigerUI V1.1.0

    [优化]gridRows和Total字段名可配置,提交给服务器的参数可配置,所有与用户操作交互的地方(如上一页、下一页)都加上事件 [优化]插件执行直接返回ligerGrid Manager(其他用到接口管理对象的插件都类同) 树 [优化...

    Ext Js权威指南(.zip.001

    7.4.5 数据验证及错误处理:ext.data.validations与ext.data.errors / 332 7.4.6 模型的关系:ext.data.association、ext.data.hasmanyassociation和ext.data.belongstoassociation / 334 7.4.7 管理数据模型:...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他...

    分享十三个最佳JavaScript数据网格库

    JavaScript 是一种通常被用在网页开发中的编程语言。...数据网格可以帮助解决在 HTML 表格上对带有过滤、分页、排序、搜索以及内联编辑这些功能特性的大量数据集的处理问题。随着技术的发展,形成了各种类型的 Jav

Global site tag (gtag.js) - Google Analytics