extjs-EditorGridPanel学习
this.grid.getStore().getModifiedRecords();
this.grid.getStore().commitChanges();
- HTML>
- <HEAD>
- <TITLE>可编辑表格面板EditorGridPanel</TITLE>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <link rel="stylesheet" type="text/css" href="extjs2.0/resources/css/ext-all.css" mce_href="extjs2.0/resources/css/ext-all.css" />
- <mce:script type="text/javascript" src="extjs2.0/adapter/ext/ext-base.js" mce_src="extjs2.0/adapter/ext/ext-base.js"></mce:script>
- <mce:script type="text/javascript" src="extjs2.0/ext-all.js" mce_src="extjs2.0/ext-all.js"></mce:script>
- <mce:script type="text/javascript" src="extjs2.0/source/locale/ext-lang-zh_CN.js" mce_src="extjs2.0/source/locale/ext-lang-zh_CN.js"></mce:script>
- <mce:script type="text/javascript"><!--
- Ext.onReady(function(){
- Ext.BLANK_IMAGE_URL = '../../extjs2.0/resources/images/default/s.gif';
- Ext.QuickTips.init();
- Ext.form.Field.prototype.msgTarget = 'qtip';
- //创建表格数据
- var data = [
- [1,'张三','男',new Date(1979,09,13),29,'zhang@abc.com'],
- [2,'李四','女',new Date(1978,10,01),30,'li@abc.com'],
- [3,'王五','男',new Date(1981,01,01),27,'wang@abc.com']
- ];
- //创建记录类型Person,mapping值为字段值对应数组中数据的索引位置
- var Person = Ext.data.Record.create([
- {name: 'personId',mapping: 0},
- {name: 'personName',mapping: 1},
- {name: 'personSex',mapping: 2},
- {name: 'personBirthday',mapping: 3},
- {name: 'personAge',mapping: 4},
- {name: 'personEmail',mapping: 5}
- ]);
- var dataStore=new Ext.data.Store({//配置数据集
- reader: new Ext.data.ArrayReader({id:0},Person),
- data: data
- });
- //创建Grid表格组件
- var grid = new Ext.grid.EditorGridPanel({
- title : 'Ext.grid.EditorGridPanel',
- applyTo : 'grid-div',
- width:430,
- height:280,
- frame:true,
- clicksToEdit:2,
- store: dataStore,
- //方式一:对所有修改结果集中式提交
- tbar:[{
- text:'提交修改',
- handler:function(){
- var mr=dataStore.getModifiedRecords();//获取所有更新过的记录
- var recordCount=dataStore.getCount();//获取数据集中记录的数量
- if(mr.length==0){ // 确认修改记录数量
- alert("没有修改数据!");
- return false;
- }
- var recordModStr="[";//这里以josn方式保存
- for(var i=0;i<mr.length;i++){
- alert("orginValue:"mr[i].modified["personEmail"]+",value:"+mr[i].data["personSex"]);//此处cell是否发生
- //更改可用mr[i].dirty来判断
- recordModStr+="{personName:"+mr[i].data["personName"]+",personSex:"+mr[i].data["personSex"]+",personBirthday:"
- +mr[i].data["personBirthday"]+",personAge:"+mr[i].data["personAge"]+",personEmail:"+mr[i].data["personEmail"]+"}";
- if(i<mr.length-1)
- recordModStr+=",";
- }
- recordModStr+="]";
- alert(recordModStr);
- //向后台提交请求 Ext.Ajax.request(requestCofig);//将recordModStr传入
- }
- }],
- columns: [//配置表格列
- {header: "id", width: 40, dataIndex: 'personId'},
- {header: "姓名", width: 70, dataIndex: 'personName',
- editor:new Ext.form.TextField({
- allowBlank : false
- })
- },
- {header: "性别", width: 40, dataIndex: 'personSex',
- editor:new Ext.form.ComboBox({
- editable : false,
- displayField:'sex',
- mode: 'local',
- triggerAction: 'all',
- store:new Ext.data.SimpleStore({
- fields: ['sex'],
- data : [['男'],['女']]
- })
- })
- },
- {header: "生日", width: 100, dataIndex: 'personBirthday',
- editor:new Ext.form.DateField(),
- renderer:Ext.util.Format.dateRenderer('Y年m月d日')
- },
- {header: "年龄", width: 40, dataIndex: 'personAge',
- editor:new Ext.form.NumberField(),renderer:isEdit
- },
- {header: "电子邮件", width: 120, dataIndex: 'personEmail',
- editor:new Ext.form.TextField({
- vtype:'email'
- })
- }
- ]
- })
- //方式二:对修改结果实时提交,这里对年龄实时提交
- function isEdit(value,record){
- //向后台提交请求
- return value;
- }
- function afterEdit(obj){ //每次更改后,触发一次该事件
- alert("orginalValue:"+obj.originalValue+",value:"+obj.value);
- }
- grid.on("afteredit", afterEdit, grid);
- });
- // --></mce:script>
- </HEAD>
- <BODY style="margin=10 10 10 10;" mce_style="margin=10 10 10 10;">
- <div id='grid-div'></div>
- </BODY>
- </HTML>
listeners:{
afterEdit: function(e){
if(e.value && e.originalValue !== e.value){
Ext.Ajax.request({
url: 'jsp/insurance/ins_prove_bl/dispose/updateDate.jsp',
success: function(response, opts){
var resObj = Ext.decode(response.responseText);
if(resObj.success){
Ext.example.msg('系统提示','操作已完成');
e.record.commit();
} else {
Ext.MessageBox.error("错误","服务器未正确响应。请稍候重试或与管理员联系。");
}
},
failure: function(response, opts){
Ext.MessageBox.error("错误","无法提交请求,请检查网络连接");
},
params: {
ipId:recordId,
ipdId: e.record.get('id'),
updateField: e.field, //列名
updateValue: e.value ? Ext.util.Format.date(new Date(e.value),'Y-m-d') : '' //值
}
});
}
}
}
红色的两行是关键代码,updateField是你要修改的列名,updateValue是你修改之后的值,这是因为你页面上可能有多个可编辑项,这样动态的取是很科学滴
后台取值代码:
String updateField = request.getParameter("updateField");
String updateValue = request.getParameter("updateValue");
updateField 就是你要修改的数据库的列名,updateValue 就是值
if(updateField != null && updateValue!=null){
updateString += " a."+updateField+" = '"+updateValue+"' ";
}
相关推荐
NULL 博文链接:https://zxf-noimp.iteye.com/blog/629629
在EXTJS中,EditorGridPanel是一种可编辑的表格组件,它允许用户直接在表格单元格内编辑数据。然而,当在EditorGridPanel中嵌入ComboBox(下拉选择框)作为编辑器时,可能会遇到一个问题,即ComboBox显示的不是其...
- `editorgrid`: `Ext.grid.EditorGridPanel` — 可编辑的表格。 - `grid`: `Ext.grid.GridPanel` — 表格。 - `panel`: `Ext.Panel` — 面板。 - `progressbar`: `Ext.ProgressBar` — 进度条。 - `splitbutton`: `...
- EditorGridPanel的高级功能 - DataView与ListView的应用场景 - 图表绘制与数据可视化 ### 架构设计原理 在《ExtJS in Action》一书中,作者首先介绍了ExtJS框架的设计理念和架构原理。ExtJS是一个用于构建...
文件"Extjs利用服务器实现Excel数据导入editorgridpanel中显示_寒冰_新浪博客.mht"可能讲解了如何将Excel 文件的数据导入到EXTJS 的EditorGridPanel 中。导入过程一般包括: 1. 用户上传Excel 文件,EXTJS 通过...
- 第三部分介绍数据驱动的组件,如网格面板(GridPanel)、编辑器网格面板(EditorGridPanel)、数据视图和列表视图(DataView和ListView)、图表(Charts)、树形结构(trees)以及菜单、按钮和工具栏(Menus, ...
EXTJS 是一个强大的JavaScript前端框架,它主要用于构建富客户端应用,提供丰富的用户界面组件和灵活的可定制性。EXTJS 的核心在于其组件化的架构,允许开发者构建复杂的UI布局和功能丰富的应用程序。以下是对EXTJS...
在EXTJS中,GridPanel是一种常用的组件,用于展示表格数据。在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加...
- **编辑网格面板**:进一步探讨了`EditorGridPanel`,这是一种可以编辑表格数据的增强型网格面板。 - **数据视图和列表视图**:介绍了`DataView`和`ListView`组件,它们适用于显示大量数据。 - **图表组件**:讲解...
1. **EXTJS组件**:EXTJS的核心是它的组件模型,包括GridPanel、TreePanel、PropertyGrid、EditorGridPanel、TabPanel、FormPanel、Panel、Window、ToolTip和FieldSet等。这些组件可以组合起来创建复杂的用户界面,...
10. `editorgrid` - `Ext.grid.EditorGridPanel`:可编辑的表格,允许用户直接在表格中修改数据。 11. `grid` - `Ext.grid.GridPanel`:标准的表格组件,用于展示数据。 12. `paging` - `Ext.PagingToolbar`:分页...
另外需要注意的是,当 `form` 与 `EditorGridPanel` 结合使用时,应当特别注意表单的状态管理,确保每次提交都是有意义的。 #### 四、字符串与对象之间的转换 在 Extjs 开发过程中,常常需要将字符串转换为对象或...
1. 基本控件:Box、Button、ColorPalette、Component、Container、CycleButton、DataView、DatePicker、Editor、EditorGridPanel、Grid、PagingToolbar、Panel、ProgressBar、SplitButton、TabPanel、TreePanel、...
- **可编辑的表格(EditorGridPanel)**: - 在表格的基础上增加了编辑功能,用户可以直接修改数据。 #### 七、与服务器交互 - **数据存储(Store)**: - 存储和管理数据集,支持本地数据和远程数据加载。 - **...
对于ExtJS EditorGridPanel中ComboBox列的显示问题,可能是因为数据没有正确绑定或格式化问题,确保`store`已加载数据,并且在`renderer`函数中正确显示数据。 至于回显问题,即在编辑时显示已有的数据,需要确保在...
- 表单及元素组件:Editor、EditorGridPanel、GridPanel、PagingToolbar、Panel、ProgressBar、SplitButton、TabPanel、TreePanel、Viewport、Window等。 EXTJS通过其强大的组件模型和丰富的API,为开发者提供了...
- 添加EditorGridPanel,允许在Grid中直接编辑单元格数据。 - 实现Model和Proxy,Model定义数据字段,Proxy配置数据源,如JsonP或Restful API。 4. **Grid的CRUD操作**: - 增加:通过Grid的行插入功能,调用...
11. **`editorgrid`** - `Ext.grid.EditorGridPanel`,可编辑的表格组件,允许用户直接在表格中编辑数据。 12. **`propertygrid`** - `Ext.grid.PropertyGrid`,属性表格组件,用于展示对象的属性。 13. **`...