转载:http://blog.csdn.net/zyujie/article/details/16362747

最近用Ext4.1自己做了做项目的练习:把一些知识点,在这里记录下来了!

上面一个form表单,用作添加用户信息,包含了一些验证技巧。下面是一个带查询参数的分页Grid。

[javascript] view plaincopy
  1. /**预加载的组件**/
  2. Ext.require([
  3. 'Ext.grid.*',
  4. 'Ext.data.*',
  5. 'Ext.util.*',
  6. 'Ext.toolbar.Paging',
  7. 'Ext.ModelManager',
  8. 'Ext.tip.QuickTipManager',
  9. 'Ext.layout.container.Border'
  10. ]);
  11. Ext.onReady(function(){
  12. Ext.Ajax.timeout = 60000; // 60秒
  13. var pageSize = 10;
  14. //自定义正则表达式验证
  15. Ext.apply(Ext.form.VTypes,{
  16. phonecheck : function(val) {
  17. return /(^[1][358][0-9]{9}$)/.test(val);
  18. },
  19. phonecheckText : "号码不匹配!"
  20. },{
  21. usercheck : function(val) {
  22. //var reg = /(^[1][358][0-9]{9}$)/;
  23. //if(reg.test(val)==false){
  24. //  return false;
  25. //}
  26. return /^[a-z]+$/.test(val);
  27. },
  28. usercheckText : "格式不正确,只接受小写字母!"
  29. });
  30. var form = Ext.create('Ext.form.Panel', {
  31. id:'userForm',
  32. title:'添加系统用户',
  33. layout: 'column',
  34. defaultType: 'textfield',
  35. width: '100%',
  36. height: 140,
  37. bodyStyle: 'padding:5px',
  38. animCollapse:true,
  39. region : 'north',
  40. collapsible:true,
  41. border: true,
  42. frame: true,
  43. plan: true,
  44. items: [{
  45. columnWidth: .3,
  46. id:'userId',
  47. name:'userId',
  48. fieldLabel: '用户编号',
  49. fieldWidth: 30,
  50. labelStyle : "text-align:right;width:30;padding-right:10px;",
  51. blankText: '请输入用户编号',
  52. allowBlank: false,
  53. maxLength:18,
  54. minLength:5,
  55. vtype:'usercheck'
  56. },{
  57. id:'userName',
  58. name:'userName',
  59. fieldLabel: '用户姓名',
  60. fieldWidth: 30,
  61. labelStyle : "text-align:right;width:30;padding-right:10px;",
  62. blankText: '请输入用户名',
  63. allowBlank: false,
  64. maxLength:18,
  65. minLength:5,
  66. columnWidth: .3
  67. },{
  68. id:'password',
  69. name:'password',
  70. fieldLabel: '密码',
  71. fieldWidth: 30,
  72. inputType:'password',
  73. labelStyle : "text-align:right;width:30;padding-right:10px;",
  74. blankText: '请输入密码',
  75. allowBlank: false,
  76. columnWidth: .3
  77. },{
  78. id:'userMail',
  79. name:'userMail',
  80. fieldLabel: '电子邮箱',
  81. fieldWidth: 30,
  82. labelStyle : "text-align:right;width:30;padding-right:10px;",
  83. blankText: '请输入电子邮箱',
  84. allowBlank: false,
  85. vtype: 'email',
  86. style: {
  87. marginTop: '10px'
  88. },
  89. columnWidth: .3
  90. },{
  91. id:'phoneno',
  92. name:'phoneno',
  93. fieldLabel: '手机号',
  94. fieldWidth: 30,
  95. labelStyle : "text-align:right;width:30;padding-right:10px;",
  96. blankText: '请输入手机号',
  97. allowBlank: false,
  98. vtype:'phonecheck',
  99. style: {
  100. marginTop: '10px'
  101. },
  102. columnWidth: .3
  103. },{
  104. id:'remark',
  105. name:'remark',
  106. fieldLabel: '备注信息',
  107. fieldWidth: 30,
  108. labelStyle : "text-align:right;width:30;padding-right:10px;",
  109. blankText: '请输入备注信息',
  110. allowBlank: true,
  111. style: {
  112. marginTop: '10px'
  113. },
  114. columnWidth: .3
  115. }],
  116. buttons: ['->', {
  117. text: '添加用户',
  118. iconCls: 'icon-add',
  119. formBind: true,
  120. handler:function(){
  121. var form = Ext.getCmp('userForm').getForm();
  122. if(form.isValid()){
  123. form.submit({
  124. url: '/mymis/system/userinfo/addUserInfo.action',
  125. method:'post',
  126. waitTitle: "请稍候",
  127. waitMsg : '提交数据,请稍候...',
  128. success: function(form, action) {
  129. Ext.Msg.alert('Success', '保存成功!');
  130. var flag = action.result.reason;
  131. if(flag == "exists"){
  132. Ext.Msg.alert('警告', '系统中已存该用户编号,请重新输入!');
  133. }else{
  134. Ext.Msg.alert('提示', '用户信息成功添加!');
  135. var grid = Ext.getCmp("myGrid");
  136. var store = grid.getStore();
  137. store.load({ params: { start: 0, limit: pageSize} });
  138. grid.reconfigure();
  139. }
  140. },
  141. failure: function(form, action) {
  142. Ext.Msg.alert('错误', '用户信息添加失败,请联系管理员!');
  143. }
  144. });
  145. }
  146. }
  147. },'-',{
  148. text: '重  置',
  149. iconCls: 'icon-reset',
  150. handler:function(){
  151. Ext.getCmp('userForm').getForm().reset();
  152. }
  153. }]
  154. });
  155. /**grid**/
  156. Ext.define('MsgList', {
  157. extend: 'Ext.data.Model',
  158. fields: [
  159. {name: 'USER_ID',  type: 'string'},
  160. {name: 'USER_NAME',  type: 'string'},
  161. {name: 'USER_MAIL',  type: 'string'},
  162. {name: 'PHONE_NO',  type: 'string'}
  163. ],
  164. });
  165. var myStore = Ext.create('Ext.data.Store', {
  166. id:'myStore',
  167. model: 'MsgList',
  168. pageSize:pageSize,
  169. autoLoad: true,
  170. remoteSort: true,
  171. proxy: {
  172. type: 'ajax',
  173. url : '/mymis/system/userinfo/queryUserInfo.action',
  174. reader: {
  175. type: 'json',
  176. root: 'rows',
  177. totalProperty: 'total'
  178. },
  179. simpleSortMode: true
  180. },
  181. });
  182. var titleBar = Ext.create('Ext.toolbar.Toolbar', {
  183. renderTo: Ext.getBody(),
  184. width : 600,
  185. layout: {
  186. overflowHandler: 'Menu'
  187. },
  188. items: [{
  189. xtype:'textfield',
  190. id:'searchMsg',
  191. name: 'searchMsg',
  192. fieldLabel: '请输入查询条件',
  193. allowBlank: true
  194. },'-',{
  195. xtype:'button',
  196. text:'查询',
  197. iconCls: 'icon-search-form',
  198. handler: function(){
  199. var txtSearch = Ext.String.trim(Ext.getCmp("searchMsg").getValue());
  200. var grid = Ext.getCmp("myGrid");
  201. var store = grid.getStore();
  202. //var pagingTB = Ext.getCmp("pagingBT");
  203. store.load({ params: { start: 0, limit: pageSize,searchMsg: txtSearch} });
  204. grid.reconfigure();
  205. //alert(pagingTB);
  206. //pagingTB.doRefresh();
  207. }
  208. }]
  209. });
  210. var grid = Ext.create('Ext.grid.Panel', {
  211. id:'myGrid',
  212. tbar:titleBar,
  213. store: myStore,
  214. frame: true,
  215. region:'center',
  216. border: true,
  217. split: true,
  218. loadMask:{msg:"数据加载中,请稍等..."},
  219. //collapsible: true,
  220. //autoHeight : true,
  221. columns: [
  222. { header: '编号', dataIndex: 'USER_ID', flex: 2 },
  223. { header: '姓名', dataIndex: 'USER_NAME', flex: 6 },
  224. { header: '邮箱', dataIndex: 'USER_MAIL', flex: 3 },
  225. { header: '手机号', dataIndex: 'PHONE_NO', flex: 3 }
  226. ],
  227. //features: [{ftype:'grouping'}],
  228. width: '100%',
  229. height: Ext.getBody().getHeight() - 140,
  230. //loadMask: true,
  231. bbar: Ext.create('Ext.PagingToolbar', {
  232. id:'pagingBT',
  233. store: myStore,
  234. displayInfo: true,
  235. displayMsg: '显示 第 {0} - {1} 条记录 一共 {2} 条记录',
  236. emptyMsg: "没有一第记录显示"
  237. })
  238. });
  239. Ext.create('Ext.container.Viewport',{
  240. layout : 'border',
  241. items : [form,grid]
  242. });
  243. //带自定义参数的分页
  244. myStore.on('beforeload', function (store, options) {
  245. var searchMsg = Ext.getCmp('searchMsg').getValue();
  246. Ext.apply(store.proxy.extraParams, {searchMsg: searchMsg});
  247. });
  248. myStore.load({ params: { start: 0, limit: pageSize} });
  249. });

添加用户的Form表单提交Action:

Ext4.1 Grid 分页查询的更多相关文章

  1. Ext4.2 grid 条件查询使用

    项目中用到Ext4.2,初次接触,用的不是太熟,做个总结,恳请指正! 1.grid重新设置条件,查询结果不是从第1页开始 在处理grid条件查询时,点击搜索按钮调用store.load()方法时,会把 ...

  2. [Extjs] Ext4 Ext.grid.Panel 分页实现(mybatis 分页插件-PageHelper 使用)

    先看图: 页面js代码: var userStore=Ext.create('Ext.data.Store', { storeId:'userStore', fields:['uname', 'ema ...

  3. dhtmlxGrid分页查询,条件查询实例

    使用jquery的ajax get将页面条件请求到后台,取得数据库数据,分页查询,返回前台grid中. 引入所需文件: <script>window.dhx_globalImgPath = ...

  4. EasyUi+Spring Data 实现按条件分页查询

    Spring data 介绍 Spring data 出现目的 为了简化.统一 持久层 各种实现技术 API ,所以 spring data 提供一套标准 API 和 不同持久层整合技术实现 . 自己 ...

  5. JAVAEE——BOS物流项目04:学习计划、datagrid、分页查询、批量删除、修改功能

    1 学习计划 1.datagrid使用方法(重要) n 将静态HTML渲染为datagrid样式 n 发送ajax请求获取json数据创建datagrid n 使用easyUI提供的API创建data ...

  6. JAVAEE——BOS物流项目06:分页查询、分区导出Excel文件、定区添加、分页问题总结

    1 学习计划 1.分区组合条件分页查询 n 分区分页查询(没有过滤条件) n 分区分页查询(带有过滤条件) 2.分区导出 n 页面调整 n 使用POI将数据写到Excel文件 n 通过输出流进行文件下 ...

  7. 一个共通的viewModel搞定所有的分页查询一览及数据导出(easyui + knockoutjs + mvc4.0)

    前言 大家看标题就明白了我想写什么了,在做企业信息化系统中可能大家写的最多的一种页面就是查询页面了.其实每个查询页面,除了条件不太一样,数据不太一样,其它的其实都差不多.所以我就想提取一些共通的东西出 ...

  8. 序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询

    查询窗口中可以设置很多查询条件 表单中输入的内容转为datagrid的load方法所需的查询条件向原请求地址再次提出新的查询,将结果显示在datagrid中 转换方法看代码注释 <td cols ...

  9. SSH——基于datagrid实现分页查询

    1. 修改页面中datagrid的URL地址,访问action // 取派员信息表格 $('#grid').datagrid( { iconCls : 'icon-forward', fit : tr ...

随机推荐

  1. iOS手写2048--基于Xcode7.1

    闲着没事自己想了下,半天写出来了,没有美化,只是实现了基本的2048,被我改成了A.B.C.D.E: 没有游戏开发经验,完全基于uiview 和 一大堆逻辑计算,如果你有指针.链表的使用经验,应该会很 ...

  2. TWinControl.SetBounds与TWinControl.UpdateBounds赏析(定义和调用)

    先看它们的函数内容: procedure TControl.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); begin // 虚函数,TWinCon ...

  3. android利用反射通过代码收缩通知栏

    最近有个需求,点击通知栏RemoteView中的按钮后要收起通知栏,系统默认是不自动收起的,不过没有找到公开的API可以控制通知栏. 在android.app.StatusBarManager里提供了 ...

  4. UVA 10706 Number Sequence (找规律 + 打表 + 查找)

    Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...

  5. 关于SVN的操作批处理示例

    关于SVN的操作批处理示例 为了一句话:不要动手做机器能够做的事情. 天天工作用svn,更新啥的打开目录啥的动作天天在重复.每次写些命令也蛮无聊的,不说了,看下面: 1 @echo off 2 rem ...

  6. (转载)教你在PHP中使用全局变量

    (转载)http://www.chinaz.com/program/2009/0123/64261.shtml 即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你 ...

  7. 图论(网络流):COGS 410. [NOI2009] 植物大战僵尸

    410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:pvz.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] Plants vs ...

  8. 数学概念——A 几何概型

    You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...

  9. 浅谈二维RMQ

    针对一些二维区间最值问题,用一维RMQ来解决显然是不够的.所以,要改进算法.鉴于网上没有PASCAL版的RMQ标程与解析,所以小可在这里简单的讲一下. 核心思想和一维的一样,只是在计算区间时略有不同. ...

  10. Mac内建Apache

    打开终端 重启apache:sudo /usr/sbin/apachectl restart 关闭apache:sudo /usr/sbin/apachectl stop 开启apache:sudo ...