edit-gridnojava.js
上传用户:qfccsy
上传日期:2022-03-27
资源大小:716k
文件大小:7k
源码类别:

ListView/ListBox

开发平台:

Java

  1. /*
  2.  * Ext JS Library 2.0.1
  3.  * Copyright(c) 2006-2008, Ext JS, LLC.
  4.  * licensing@extjs.com
  5.  * 
  6.  * http://extjs.com/license
  7.  */
  8. /**
  9.  * 无 DWR Java 后台静态页面演示版本.
  10.  * 简体中文 Demo 制作: 刘长炯 beansoft@126.com
  11.  * http://beansoft.blogjava.net/
  12.  */
  13. Ext.onReady(function(){
  14.     Ext.QuickTips.init();
  15. // 格式化日期显示
  16.     function formatDate(value){
  17.         return value ? value.dateFormat('Y, M d') : '';
  18.     }
  19. // 格式化性别显示,这是个 renderer, 渲染器
  20. function formatSex(value) {
  21. return value ? "男" : "女";
  22. }
  23.     // 弄个缩写的别名
  24.     var fm = Ext.form;
  25.     // 列模型定义了表格所有列的信息, 
  26. // dataIndex 将特定的列映射到数据源(Data Store)中的数据列(在后面创建)
  27.     var cm = new Ext.grid.ColumnModel([
  28.      {
  29.            id:'id',
  30.            header: "编号",
  31.            dataIndex: 'id',
  32.            width: 50
  33.         },
  34.         
  35. {
  36.            id:'name',
  37.            header: "用户名",
  38.            dataIndex: 'name',
  39.            width: 250,
  40.            editor: new fm.TextField({
  41.                allowBlank: false// 不能为空
  42.            })
  43.         },
  44. {
  45.            header: "地区",
  46.            dataIndex: 'area',
  47.            width: 100,
  48.            editor: new Ext.form.ComboBox({
  49.                typeAhead: true,
  50.                triggerAction: 'all',
  51.                transform:'area',// 对应的选择框的ID
  52.                lazyRender:true,
  53.                listClass: 'x-combo-list-small'
  54.             })
  55.         },
  56. {
  57.            header: "电子邮件",
  58.            dataIndex: 'email',
  59.            width: 220,
  60.            align: 'left',
  61.            editor: new fm.TextField({
  62.                allowBlank: true
  63.            })
  64.         },
  65. {
  66.            header: "年龄",
  67.            dataIndex: 'age',
  68.            width: 70,
  69.            align: 'right',
  70.            editor: new fm.NumberField({
  71.                allowBlank: true,
  72.                allowNegative: false,
  73.                maxValue: 100
  74.            })
  75.         },
  76. {
  77.            header: "生日",
  78.            dataIndex: 'birthDay',
  79.            width: 95,
  80.            renderer: formatDate,
  81.            editor: new fm.DateField({
  82.                 format: 'y/m/d',
  83.                 minValue: '1970/01/01',//最小值
  84.                 disabledDays: [0, 6],// 禁止选择的日期
  85.                 disabledDaysText: '不许周末出生孩子'
  86.             })
  87.         },
  88. {
  89.            header: "性别",
  90.            dataIndex: 'sex',
  91.            width: 95,
  92.    renderer: formatSex,
  93.            editor: new fm.Checkbox()
  94.         }
  95.     ]);
  96.     // 默认情况下列是可排序的
  97.     cm.defaultSortable = true;
  98.     // 定义一个用户对象,这样便于我们动态的添加记录,虽然也可以设置成匿名内置对象
  99.     var User = Ext.data.Record.create([
  100.            // 下面的 "name" 匹配读到的标签名称, 除了 "birthDay",它被映射到标签 "birth"
  101.            {name: 'id', type: 'int' },
  102.            {name: 'name', type: 'string'},
  103.    {name: 'area'},
  104.            {name: 'email', type: 'string'},
  105.            {name: 'age', type: 'int'},             // automatic date conversions
  106.            {name: 'birthDay', mapping: 'birth', type: 'date', dateFormat: 'Y/m/d'},
  107.            {name: 'sex', type: 'bool'}
  108.       ]);
  109.     // 创建 Data Store
  110.     var store = new Ext.data.Store({
  111.         // 使用 HTTP 加载
  112.         url: 'users.xml',
  113.         // 因为返回值是 XML, 所以我们创建一个解析器
  114.         reader: new Ext.data.XmlReader({
  115.                // 记录必须包含 "user" 标签
  116.                record: 'user'
  117.            }, User),
  118.         sortInfo:{field:'name', direction:'ASC'}// 排序信息
  119.     });
  120.     // 创建编辑器表格
  121.     var grid = new Ext.grid.EditorGridPanel({
  122.         store: store,
  123.         cm: cm,
  124.         renderTo: 'editor-grid',
  125.         width:800,
  126.         height:300,
  127.         autoExpandColumn:'name',
  128.         title:'用户管理',// 标题
  129.         frame:true,
  130.         clicksToEdit:1,//设置点击几次才可编辑
  131.         selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),//设置单行选中模式, 否则将无法删除数据
  132. // 顶部工具栏按钮
  133.         tbar: [
  134. {
  135.             text: '添加用户',
  136. iconCls:'add',//按钮图标的CSS名称
  137.  
  138.             handler : function(){// 点击按钮执行的操作
  139.              var n = grid.getStore().getCount();// 获得总行数
  140.                 var p = new User({
  141.                  id: n + 1,
  142.                     name: '新用户' + n,
  143.                     area: '北京',
  144. email: 'beansoft@126.com',
  145.                     age: 20,
  146.                     birthDay: (new Date()).clearTime(),
  147.                     sex: true
  148.                 });
  149.                 
  150.                 grid.stopEditing();// 停止编辑
  151.                 store.insert(n, p);// 插入到最后一行
  152.                 grid.startEditing(n, 1);// 开始编辑1单元格
  153.             }
  154.         },
  155. {
  156.             text: '查看所选',
  157. iconCls: 'details',
  158.             handler : function(){
  159.                 var recordtoedit = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
  160.                 if(recordtoedit) {
  161. Ext.Msg.alert('查看选中', "您现在选中的用户其名字为:" + recordtoedit.get("name"));// 取得用户名
  162. // alert("您现在选中的用户其名字为:" + recordtoedit.get("name"));
  163. }
  164.             }
  165.         },
  166. {
  167.             text: '删除所选',
  168. iconCls:'remove',
  169.             handler : function(){
  170.                 var record = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
  171.                 
  172.                 if(!record){
  173. Ext.Msg.alert("提示","请先选择要删除的行!");
  174. return;
  175. }
  176. // 弹出对话框警告
  177. if(record) {
  178. Ext.MessageBox.confirm('确认删除', 
  179.           '你真的要删除所选用户吗?', 
  180.           function(btn) {
  181.           if(btn == 'yes') {// 选中了是按钮
  182.            // 更新界面, 来真正删除数据
  183.   store.remove(record);
  184.  }
  185. }
  186. );
  187. }
  188.             }
  189.         },
  190. {
  191.             text: '删除所有',
  192. iconCls: 'user-delete',
  193.             handler : function(){
  194. Ext.MessageBox.confirm('确认删除', 
  195.           '你真的要删除所有用户信息吗?', 
  196.           function(btn) {
  197.           if(btn == 'yes') {// 选中了是按钮
  198.            // 更新界面, 来真正删除数据
  199.   store.removeAll();
  200.  }
  201. }
  202. );
  203.             }
  204.         }
  205. ]
  206.     });
  207. // 单元格编辑后事件处理
  208. grid.on("afteredit", afterEdit, grid);
  209. // 事件处理函数
  210. function afterEdit(e) {
  211. var record = e.record;// 被编辑的记录
  212. // 显示等待对话框
  213. Ext.Msg.wait("请等候", "修改中", "操作进行中..."); 
  214.        // 更新界面, 来真正删除数据
  215. Ext.Msg.alert('您成功修改了用户信息', "被修改的用户是:" + e.record.get("name") + "n 修改的字段是:" 
  216. + e.field);// 取得用户名
  217. };
  218.     // 触发数据加载
  219.     store.load();
  220. });