`
Jameswsz
  • 浏览: 159854 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

EXT可编辑Grid(EditorGridPanel )实现增删改

    博客分类:
  • EXT
阅读更多
Ext.onReady(function() {
    Ext.BLANK_IMAGE_URL = '../resources/images/default/s.gif';

    Ext.QuickTips.init();

    function formatDate(value) {
    	//var date = new Date(value);
    	return value ? date.dateFormat('Y-m-d H:i:s') : '';
    }

    var sm = new Ext.grid.CheckboxSelectionModel({checkOnly : true});

    var cm = new Ext.grid.ColumnModel([sm, {
		        id : 'ID',
		        header : '编号',
		        dataIndex : 'ID',
		        align : 'center',
		        width : 110,
		        hidden : true
    		}, {
		        header : '名称',
		        dataIndex : 'name',
		        align : 'center',
		        width : 150,
		        editor : new Ext.form.TextField({})
    		}, {
		        header : "时间",
		        dataIndex : 'time',
		        width : 120,
		        align : 'center',
		        renderer : formatDate,
		        editor : new Ext.ux.form.DateTimeField({
		            fieldLabel : '时间',
		            id : 'time',
		            name : 'time',
		            width : 130,
		            height : 30,
		            allowBlank : false,
		            blankText : '时间不能为空',
		            editable : false,
		            value : new Date()
				})
    		}]);

    var record = Ext.data.Record.create([{
		        name : 'ID',
		        type : 'string'
    		}, {
		        name : 'name',
		        type : 'string'
    		}, {
		        name : 'time',
		        type : 'date',
		        dateFormat : 'Y-m-d H:i:s'
    		}]);

    var store = new Ext.data.Store({
	        autoLoad : false,
	        pruneModifiedRecords : true, //每次Store加载后,清除所有修改过的记录信息	
	        proxy : new Ext.data.HttpProxy({
	            url : 'list.action',
	            method : 'POST'
	        }),
	        baseParams : {
	        	pageNo : 0,
	        	pageSize : 10
	        },
	        paramNames : {
	        	start : "pageNo",
	        	limit : "pageSize"
	        },
	        reader : new Ext.data.JsonReader({
		            totalProperty : 'totalCount',
		            root : 'results'
	        	}, record)
	    	});

    store.load();

    var tbar = new Ext.Toolbar({
        	items : [{
	            text : '新增',
	            iconCls : 'add',
	            handler : add
    		}, '-', {
	            text : '保存',
	            iconCls : 'save',
	            handler : save
    		}, '-', {
	            text : '删除',
	            iconCls : 'remove',
	            handler : remove
    		}]
    	});

    var bbar = new Ext.PagingToolbar({
	        pageSize : 10,
	        store : store,
	        displayInfo : true,
	        lastText : "尾页",
	        nextText : "下一页",
	        beforePageText : "当前",
	        prevText : "上一页",
	        firstText : "首页",
	        refreshText : "刷新",
	        afterPageText : "页,共{0}页",
	        displayMsg : '数据从第{0}条 - 第{1}条 共{2}条数据',
	        emptyMsg : '没有数据'
    	});

    var grid = new Ext.grid.EditorGridPanel({
	        id : "myGrid",
	        title : '信息维护', 
	        renderTo : 'grid', 
	        sm : sm,
	        cm : cm,
	        store : store,
	        clicksToEdit : 1,
	        loadMask : {
	        	msg : '正在加载数据,请稍侯……'
	        },
	        autoScroll : true,
	        autoWidth : true,
	        autoHeight : true,
	        stripeRows : true,
	        viewConfig : {
	        	forceFit : true
	        },
	        tbar : tbar,
	        bbar : bbar
    	});

    grid.render();

    function add() {
    	var initValue = {
    		ID : "",
    		name : "",
    		time : new Date()
    	};
    	var recode = store.recordType;
    	var p = new recode(initValue); // 根据上面创建的recode 创建一个默认值
    	grid.stopEditing();
    	store.insert(0, p);// 在第一个位置插入
    	grid.startEditing(0, 1);// 指定的行/列,进行单元格内容的编辑
    }

    function save() {
    	var modified = store.modified;
		Ext.Msg.confirm("警告", "确定要保存吗?", function(button) {
        	if (button == "yes") {
        		var json = [];
        		Ext.each(modified, function(item) {
            		json.push(item.data);
            	});
        		if (json.length > 0) {
		            Ext.Ajax.request({
		                url : "save.action",
		                params : {
		                	data : Ext.util.JSON.encode(json)
		                },
		                method : "POST",
		                success : function(response) {
		                	Ext.Msg.alert("信息","数据保存成功!",function() {
		                    	store.reload();
		                    });
		                },
		                failure : function(response) {
		                	Ext.Msg.alert("警告","数据保存失败,请稍后再试!");
		                }
		            });
        		} else {
            		Ext.Msg.alert("警告", "没有任何需要更新的数据!");
        		}
        	}
        });
    }

    function remove() {
    	var selModel = grid.getSelectionModel();
    	if (selModel.hasSelection()) {
    		Ext.Msg.confirm("警告", "确定要删除吗?", function(button) {
        		if (button == "yes") {
		            var recs = selModel.getSelections();
		            var list = [];
		            for (var i = 0; i < recs.length; i++) {
		            	var rec = recs[i];
		            	list.push("'" + rec.get('ID') + "'");
		            }
		            Ext.Ajax.request({
		                url : "delete.action",
		                params : {
		                	data : list.join(',')
		                },
		                method : "POST",
		                success : function(response) {
		                	Ext.Msg.alert("信息","数据删除成功!", function() {
		                    	store.reload();
		                    });
		                },
		                failure : function(response) {
		                	Ext.Msg.alert("警告","数据删除失败,请稍后再试!");
		                }
		            });
        		}
        	});
    	} else {
    		Ext.Msg.alert("错误", "没有任何行被选中,无法进行删除操作!");
    	}
    }
});

后台:

public String list() throws Exception {
		String sql = "select ID,name,time from Info";
		String rs= infoService.getJSONBySQL(sql, page);
		String jsonString = "{totalCount:" + page.getTotal() + ",results:" + rs+ "}";

		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json");
		response.getWriter().print(jsonString);

		return null;
	}

	public String save() throws Exception {
		String data = request.getParameter("data");
		JSONArray array = JSONArray.fromObject(data);
		Object[] list = array.toArray();
		for (int i = 0; i < list.length; i++) {
			Map<String, String> map = (Map<String, String>) list[i];
			Info info = new Info();
			info.setId(map.get("ID"));
			info.setName(map.get("name"));
			info.setTime(map.get("time"));

			if (null != info.getId() && info.getId().length() > 0) {
				infoService.upate(info);
			} else {
				infoService.save(info);
			}
		}

		response.getWriter().write("SUCCESS");

		return null;
	}

	public String delete() throws Exception {
		String ids = request.getParameter("data");

		infoService.delete(ids);

		response.getWriter().write("SUCCESS");

		return null;
	}

 

1
6
分享到:
评论

相关推荐

    可编辑表格Ext.grid.EditorGridPanel

    Ext.grid.EditorGridPanel是Ext JS库中的一个组件,主要用于创建具有可编辑单元格的表格。这个组件在数据展示和编辑方面提供了丰富的功能,是构建数据密集型应用的理想选择。下面将详细阐述其特点、工作原理及如何...

    ext 读取xml 可编辑grid

    在EXT JS框架中,"ext 读取xml 可编辑grid"是一个常见的需求,涉及到的主要知识点包括EXT的数据对象、EditorGridPanel的使用以及EXT对XML数据格式的支持。下面将详细阐述这些内容。 EXT JS是一个强大的JavaScript库...

    Ext.net后台分页增删改

    在"Ext.NET后台分页增删改"这个主题中,我们将探讨如何利用Ext.NET实现数据库后台分页、树形视图操作以及Grid面板的CRUD(创建、读取、更新和删除)功能。 首先,让我们深入了解一下后台分页。在Ext.NET中,为了...

    Ext可编辑的tree,EditorGridPanel

    因为项目的需求,实现一个可以编辑的tree,在网上找了一个牛人写的控件.Ext.ux.maximgb.tg.EditorGridPanel 把源码下载下来以后 不能运行,自己根据给出的列子,另写了一个小程序.不过并没有与数据库交互.

    EXT2.0 GRID 示例

    3. **行编辑**:EXT GRID支持行内编辑,用户可以直接在表格中修改数据,这需要结合EditorGridPanel和Form Field组件来实现。 4. **排序和过滤**:GRID可以实现列点击排序,通过配置`sortable`属性和`sortInfo`对象...

    给Extjs的GridPanel增加“合计”行

    - 首先,我们需要创建一个继承自EXTJS的`Ext.grid.GridView`的自定义View类。这个类将覆盖默认的渲染逻辑,以便在表格底部插入合计行。 - 在`GridSummary.js`文件中,我们可以定义这个类,并重写`onRender`方法,...

    Extjs可编辑的EditorGridPanel

    NULL 博文链接:https://zxf-noimp.iteye.com/blog/629629

    Ext grid合并单元格

    根据提供的文件信息,我们可以深入探讨如何在 Ext JS 中实现 Grid 的单元格合并功能。此案例主要涉及到了自定义 GridView 的 `renderHeaders` 方法来达到单元格合并的目的,并且还涉及了模板(Template)的使用、...

    解决editorgridpanel编辑时视图向右移动的问题

    EditorGridPanel是Ext JS库中的一个组件,它结合了数据网格和表单编辑的功能,允许用户直接在网格的单元格内编辑数据。当用户点击某个单元格进行编辑时,编辑器应该在原单元格位置弹出,但有时由于某种原因,整个...

    ext的edittreegrid实现

    在EXT JS库中,"ext的edittreegrid实现"是一种功能强大的组件,它结合了树形视图(Tree)和编辑网格(EditorGrid)的功能,允许用户在具有层次结构的数据上进行直观的编辑操作。这个组件对于那些需要管理结构化且...

    ssh+extjs4.0grid增删改查

    在"ssh+extjs4.0grid增删改查"这个主题中,我们将深入探讨如何将SSH框架与Ext JS 4.0 Grid集成,实现数据的CRUD(Create, Read, Update, Delete)功能。 1. **Struts2整合Hibernate**: - 配置Struts2-Hibernate...

    ext3 gridRowEditor本地数据简单demo,有注释

    开发者可能会使用`Ext.grid.EditorGridPanel`,并为每个列定义一个`editor`属性来启用单元格编辑。同时,Store的配置可能包括数据源(即"data"),以及定义字段的`fields`属性。 在深入理解这个demo的过程中,你...

    EXT核心API详解

    73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65 1、Ext类 addBehaviors(Object obj) : void 对选择的元素 应用事件侦听器,事件名以@附加在结尾,例如 addBehaviors({ ...

    Ext3.0 api帮助文档

    - **Ext.grid.EditorGridPanel**: 提供单元格级别的编辑功能。 6. **表单(Forms)** - **Ext.form.FormPanel**: 创建表单的容器,支持多种表单元素和验证。 - **Ext.form.Field**: 表单字段类,如文本框、选择...

    Ext.grid.GridPanel右键菜单

    右键菜单的资料,代码已经详细描写。请仿照文件中所描述即可使用,不限于EXT4.0以上版本使用。

    Ext 连接数据库的相关操作

    首先,EXT中的Editgridpanel是一个可编辑的表格组件,用于显示和编辑数据。它集成了数据绑定和行编辑功能,非常适合于数据管理界面。要将Editgridpanel与数据库连接,我们需要创建一个数据源,这通常是通过EXT的...

    ExtJS增删改查

    var grid = new Ext.grid.EditorGridPanel({ ds: fds, cm: cm, sm: sm, width: 200, height: 200, title: '举例', renderTo: Ext.get("testdiv") }); ``` #### 五、增删改查具体实现 1. **查询**: - 当...

    extjs3连接mysql数据库实现增删查改功能

    你还可以添加编辑功能,例如使用`Ext.grid.EditorGridPanel`,使得用户可以直接在表格内编辑数据。 6. **表单组件(Form)**: 创建`Ext.form.FormPanel`用于输入和编辑数据。配置`fields`为你的数据模型,`url`为...

    Ext表格控件和树控件

    var grid = new Ext.grid.EditorGridPanel({ title: '可编辑表格', width: 600, height: 300, store: store, columns: [ { header: "项目名称", dataIndex: "name", editor: 'textfield' }, { header: "开发...

Global site tag (gtag.js) - Google Analytics