`
wanchong998
  • 浏览: 236065 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Extjs Grid 编辑 新增 删除 保存 (爽)

阅读更多
//创建edgrid.js
Ext.onReady(function(){
    Ext.QuickTips.init();

    // 格式化日期显示
    function formatDate(value){
        return value ? value.dateFormat('Y, M d') : '';
    }
    // 格式化性别显示,这是个 renderer, 渲染器
    function formatSex(value) {
        return value ? "男" : "女";
    }
    // 弄个缩写的别名
    var fm = Ext.form;

    // 列模型定义了表格所有列的信息,
    // dataIndex 将特定的列映射到数据源(Data Store)中的数据列(在后面创建)
    var cm = new Ext.grid.ColumnModel([
            {
           id:'id',
           header: "编号",
           dataIndex: 'id',
           width: 50
        },
        {
           id:'name',
           header: "用户名",
           dataIndex: 'name',
           width: 250,
           editor: new fm.TextField({
               allowBlank: false// 不能为空
           })
        },
        {
           header: "地区",
           dataIndex: 'area',
           width: 100,
           editor: new Ext.form.ComboBox({
               typeAhead: true,
               triggerAction: 'all',
               transform:'area',// 对应的选择框的ID
               lazyRender:true,
               listClass: 'x-combo-list-small'
            })
        },
        {
           header: "电子邮件",
           dataIndex: 'email',
           width: 220,
           align: 'left',
           editor: new fm.TextField({
               allowBlank: true
           })
        },
        {
           header: "年龄",
           dataIndex: 'age',
           width: 70,
           align: 'right',
           editor: new fm.NumberField({
               allowBlank: true,
               allowNegative: false,
               maxValue: 100
           })
        },
        {
           header: "生日",
           dataIndex: 'birthDay',
           width: 95,
           renderer: formatDate,
           editor: new fm.DateField({
                format: 'y/m/d',
                minValue: '1970/01/01',//最小值
                disabledDays: [0, 6],// 禁止选择的日期
                disabledDaysText: '不许周末出生孩子'
            })
        },
        {
           header: "性别",
           dataIndex: 'sex',
           width: 95,
           renderer: formatSex,
           editor: new fm.Checkbox()
        }
    ]);

    // 默认情况下列是可排序的
    cm.defaultSortable = true;

    // 定义一个用户对象,这样便于我们动态的添加记录,虽然也可以设置成匿名内置对象
    var User = Ext.data.Record.create([
           // 下面的 "name" 匹配读到的标签名称, 除了 "birthDay",它被映射到标签 "birth"
           {name: 'id', type: 'int' },
           {name: 'name', type: 'string'},
           {name: 'area'},
           {name: 'email', type: 'string'},
           {name: 'age', type: 'int'},             // automatic date conversions
           {name: 'birthDay', mapping: 'birth', type: 'date', dateFormat: 'Y/m/d'},
           {name: 'sex', type: 'bool'}
      ]);

    // 创建 Data Store
    var store = new Ext.data.Store({
        // 使用 HTTP 加载
        url: 'users.xml',

        // 因为返回值是 XML, 所以我们创建一个解析器
        reader: new Ext.data.XmlReader({
               // 记录必须包含 "user" 标签
               record: 'user'
           }, User),

        sortInfo:{field:'name', direction:'ASC'}// 排序信息
    });

    // 创建编辑器表格
    var grid = new Ext.grid.EditorGridPanel({
        store: store,
        cm: cm,
        renderTo: 'editor-grid',
        width:800,
        height:300,
        autoExpandColumn:'name',
        title:'功能管理',// 标题
        frame:true,
        clicksToEdit:1,//设置点击几次才可编辑
        selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),//设置单行选中模式, 否则将无法删除数据

        // 顶部工具栏按钮
        tbar: [
        {
            text: '新增',
            iconCls:'xz',//按钮图标的CSS名称
            handler : function(){// 点击按钮执行的操作
                var n = grid.getStore().getCount();// 获得总行数
                var p = new User({
                    id: n + 1,
                    name: '新数据' + n,
                    area: '',
                    email: 'Benson@163.com',
                    age: 20,
                    birthDay: (new Date()).clearTime(),
                    sex: true
                });
                grid.stopEditing();// 停止编辑
                store.insert(n, p);// 插入到最后一行
                grid.startEditing(n, 1);// 开始编辑1单元格
            }
        },
        {
            text: '删除',
            iconCls:'sc01',
            handler : function(){
           
                //var record = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
                var rows = grid.getSelectionModel().getSelections();// 返回值为 Record 数组
if(rows.length==0){
Ext.MessageBox.alert('警告', '最少选择一条信息,进行删除!');
}else{
Ext.MessageBox.confirm('提示框', '您确定要进行该操作?',function(btn){
if(btn=='yes'){
if(rows){
for (var i = 0; i < rows.length; i++) {
//alert(rows[i].get("id"));
store.remove(rows[i]);
//store.removeAll(); //删除所有数据

}
this.getEl().dom.action='./formservlet?operator=save';
this.getEl().dom.submit();
}
}
});
}                // 弹出对话框警告
            }
        },
        {
            text: '保存',
            iconCls: 'bc',
            handler : function(){
var recordtoedit = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
                if(recordtoedit) {
                    Ext.Msg.alert('查看选中', "您现在选中的用户其名字为:" + recordtoedit.get("name"));// 取得用户名
                    // alert("您现在选中的用户其名字为:" + recordtoedit.get("name"));
                }
            }
        },
        {
            text: '查询',
            iconCls: 'cx',
            handler : function(){
              
            }
        }
        ]
    });

    // 单元格编辑后事件处理
    grid.on("afteredit", afterEdit, grid);
    // 事件处理函数
    function afterEdit(e) {
        var record = e.record;// 被编辑的记录
        // 显示等待对话框
        Ext.Msg.wait("请等候", "修改中", "操作进行中...");

          // 更新界面, 来真正删除数据
            Ext.Msg.alert('您成功修改了用户信息', "被修改的用户是:" + e.record.get("name").value + "\n 修改的字段是:"
            + e.field);// 取得用户名
    };

    // 触发数据加载
    store.load();
});

//创建edgrid.jsp

<%@page contentType="text;html; charset=GBK"%>
<%@page import="com.luke.hm.tree.EJBContext"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>表格编辑器示例</title>

<link rel="stylesheet" type="text/css" href="<%= EJBContext.getRootPath()%>/ext/resources/css/ext-all.css" />

<!-- 图标样式 CSS 信息 -->

<link rel="stylesheet" type="text/css" href="<%= EJBContext.getRootPath()%>/menujscss/edgrid.css" />

    <!-- GC -->
     <!-- LIBS -->
     <script type="text/javascript" src="<%= EJBContext.getRootPath()%>/ext/adapter/ext/ext-base.js"></script>
     <!-- ENDLIBS -->

    <script type="text/javascript" src="<%= EJBContext.getRootPath()%>/ext/ext-all.js"></script>
    <!-- 中文提示信息支持 -->
     <script type="text/javascript" src="<%= EJBContext.getRootPath()%>/ext/source/locale/ext-lang-zh_CN.js"></script>

    <!-- 本页的功能代码 -->
    <script type="text/javascript" src="edgrid.js"></script>
    <!--  DWR JavaScript 类库 -->
    <!--script type='text/javascript' src='/dwrtest/dwr/interface/JUserManager.js'></script-->
  <!--script type='text/javascript' src='/dwrtest/dwr/engine.js'></script-->

</head>
<body>

<h1>
  <select name="area" id="area" style="display: none;">
      <option value="历城区">历城区</option>
      <option value="历下区">历下区</option>
      <option value="槐荫区">槐荫区</option>
  </select>

  <!-- 放置可编辑控件的 DIV -->
</h1>
<div id="editor-grid"></div>

</body>
</html>

//创建users.xml
<?xml version="1.0" encoding="GBK"?>
<users>
  <user>
      <id>1</id>
    <name>XXX1</name>
    <area>XXX2</area>
    <email>XXX1@126.com</email>
    <age>88</age>
    <sex>true</sex>
    <birth>1980/01/01</birth>
  </user>
    <user>
    <id>2</id>
    <name>Benson</name>
    <area>山东济南</area>
    <email>Benson@163.com</email>
    <age>27</age>
    <sex>true</sex>
    <birth>1982/12/12</birth>
  </user>
    <user>
    <id>3</id>
    <name>Benson_GG</name>
    <area>济南历下</area>
    <email>aa@bb.com</email>
    <age>28</age>
    <sex>false</sex>
    <birth>1982/12/11</birth>
  </user>

</users>

//创建edgrid.css
/** 定义了一些工具栏按钮的 CSS 样式 */
.xz {
    background-image:url(./xz.gif) !important;
}

.sc01 {
    background-image:url(./sc.gif) !important;
}

.sc02 {
    background-image:url(./sc.gif) !important;
}

.cx {
    background-image:url(./cx.gif) !important;
}

.bc {
    background-image:url(./bc.gif) !important;
}

  • 大小: 16.7 KB
分享到:
评论
6 楼 puqingluochen 2012-04-08  
源码能打包发给我吗,谢谢了。
5 楼 ext 2009-04-20  
         editor: new fm.DateField({
                disabledDays: [0, 6],// 禁止选择的日期
                disabledDaysText: '不许周末出生孩子'
            })
这个规定实在是太强了.....
囧!!
4 楼 peterlicun 2009-04-20  
zhongweizhang 写道
这东西怎么用的啊?



http://ppw308593.14.112idc.com/read.php?tid=1&page=1&toread=1#tpc
3 楼 penghao122 2008-07-23  
这些太基本了。。。。
2 楼 zhongweizhang 2008-07-16  
这东西怎么用的啊?
1 楼 rennuoting 2008-07-15  
源码能打个包共享吗 谢谢

相关推荐

    ExtJs4.1 treegrid CRUD 读取、新增、修改、删除

    实现treegrid组件的(CRUD)读取、新增、修改、删除 //设置grid单元格处于编辑状态 selcell:function(arow,acol){ this.editingPlugin.startEditByPosition({row:arow,column:acol}); }, selcell2:function(node,...

    ExtJs3 演示系统

    3. **部门管理模块**:可能使用TreePanel来展示组织结构,部门节点可以展开和折叠,用户可以新增、删除和编辑部门信息。 4. **权限管理模块**:通过Role和Permission的概念,控制不同角色的员工对系统的访问权限,...

    Extjs 增删改查

    根据题目给出的信息,本文主要围绕Extjs中的表格组件(Grid)展开,介绍如何通过Grid实现对数据的增删改查功能。下面将分别针对各个功能点进行深入探讨。 #### 三、Extjs Grid组件配置详解 1. **初始化配置** - `...

    extjs做的增删改查

    - 按钮(Button):触发操作,如新增、删除、保存和取消。 2. **Struts2框架**: - 动作类(Action Class):处理用户请求,执行业务逻辑。 - 结果映射(Result Mapping):定义动作执行后的页面跳转或数据返回...

    用Extjs做的一个小项目,实现了增删改查

    - **Toolbar**:可以添加在Grid Panel上方或下方,用于放置操作按钮,如新增、删除、保存、撤销等。 - **Window**:用于弹出对话框,如创建新记录或编辑现有记录时的表单窗口。 2. **数据模型和存储** - **Store...

    Ext增删改查和excel导出

    items: ['-&gt;', {text: '新增', action: 'add'}, {text: '删除', action: 'delete'}, {text: '编辑', action: 'edit'}] }); grid.addDocked(toolbar); // 处理按钮点击事件 Ext.application({ launch: ...

    SSH2 注解 ExtJs前台 返回Json 的一个增删改查demo

    在增删改查操作中,表格通常用于显示数据列表,表单用于编辑和新增记录。 3. **Ajax异步请求**:ExtJs通过Ajax实现与服务器的异步通信,进行数据的获取、提交等操作。在增删改查的场景下,用户在前端操作后,对应的...

    dummy-ext-crud:ExtJS 6 CRUD的简单示例

    例如,"新增"按钮可能触发store的add方法,"保存"按钮可能触发form的submit,"编辑"和"删除"按钮同样会有对应的事件处理函数。 在"dummy-ext-crud"项目中,你可能会看到以下关键代码片段: - `app/store/MyStore....

    ExtAspNet_v2.3.2_dll

    ExtAspNet - ExtJS based ASP.NET Controls with Full AJAX Support ExtAspNet是一组专业的Asp.net控件库,拥有原生的AJAX支持和丰富的UI效果, 目标是创建没有ViewState,没有JavaScript,没有CSS,没有...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -优化AJAX的内部实现,每个页面保存的ViewState现在减少1/3左右(重要更新)。 -优化Tree节点的NodeId自动生成,减少ViewState占用。 +2009-08-09 v2.0 beta5 +ExtAspNet和Asp.net的提交按钮兼容问题...

Global site tag (gtag.js) - Google Analytics