//创建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;
}
详细解决方案
Extjs Grid 编者 新增 删除 保存
热度:513 发布时间:2012-10-28 09:54:44.0
相关解决方案
- Extjs grid 失去选中行的列数据
- extjs 后台有数据,但是返回到页面为空,jsonStore加载错误,这是咋回事
- S2SH、EXTJS、JSON调整后,EXTJS接收不到Struts2的Action传回的值,无语
- Ext.grid.rowexpander 默许展开
- extjs 简单有关问题
- extjs+struts2解决办法
- Ext.ux.grid.RowEditor 的使用出现有关问题 。 求大神指点
- ExtJs 处理 datetime 有关问题
- 小女子请教一个 Ext.ux.grid.RowEditor的有关问题
- 【EXTJS】iframe里嵌套ext.window,怎样使ext.window弹出到iframe外,该怎么解决
- Tomcat + extjs 入门有关问题
- extjs ColumnModel 怎么实现表格中的数据小数点对齐
- Extjs 变量前的一个加号代表什么意思?解决方法
- extjs grid 怎么实现 行选中变色
- ExtJs 提交表单的小疑点
- DevExpress.XtraGrid.Views.Grid.GridView 怎么自增新行
- grid ++ report异常
- Grid++Report 显示有关问题
- 自己写的Asp.net Ajax,Jquery,ExtJs 三种Ajax技术框架比较,希望大家提提意见,多谢
- 有关MVC3中用到Html.Telerik().Grid()的绑定有关问题, 急
- ComponentArt:Grid 单击第二页时 报the data could not be loaded,该如何处理
- easyui grid 关于最后一条记录,该怎么解决
- 关于dv grid 的有关问题
- Ext Js 4 为什么一直出现 grid.getSelectionModel()没有定义。该如何解决
- grid++report Web插件有破解版本吗?解决思路
- 寻好用的 Grid 控件。For Asp.net,该如何解决
- EXTJS grid的getView的refresh步骤报this.grid为空或不是对象
- EXTJS grid的getView的refresh方法报this.grid为空或不是对象解决办法
- vpf9.0 grid 中text的怪有关问题
- GRID 修改即显示的有关问题