鸣谢地址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-14/176.html

----------------------------------------------------------------------------------------------

以上实现的效果就是本节所要做的效果,现在看代码:

/**
* Grid
* 此js演示了如何设置可编辑表格
*/
//表格数据最起码有列、数据、转换原始数据这3项
Ext.onReady(function(){
//定义列
var columns = [
{header:'编号',dataIndex:'id',width:50,
editor:{
allowBlank:true
}}, //sortable:true 可设置是否为该列进行排序
{header:'名称',dataIndex:'name',width:80,
editor:{
allowBlank:true
}},
{header:'描述',dataIndex:'descn',width:112,
editor:{
allowBlank:true
}}
];
//定义数据
var data =[
['1','小王','描述01'],
['2','李四','描述02'],
['3','张三','描述03'],
['4','束洋洋','思考者日记网'],
['5','高飞','描述05']
];
//转换原始数据为EXT可以显示的数据
var store = new Ext.data.ArrayStore({
data:data,
fields:[
{name:'id'}, //mapping:0 这样的可以指定列显示的位置,0代表第1列,可以随意设置列显示的位置
{name:'name'},
{name:'descn'}
]
});
//加载数据
store.load(); //创建表格
//原:Ext.grid.GridPanel,但在Extjs4.1(4.2)中都没找到,只有new Ext.grid.Panel,不过效果一致。
var grid = new Ext.grid.Panel({
renderTo:'grid', //渲染位置
width:550,
autoHeight:true,
store:store,
columns:columns, //显示列
stripeRows:true, //斑马线效果
selType: 'cellmodel',
plugins:[
Ext.create('Ext.grid.plugin.CellEditing',{
clicksToEdit:1 //设置单击单元格编辑(设置为2是双击进行修改)
})
],
tbar:['-',{
text:'添加一行',
handler:function(){
var p ={
id:'',
name:'',
descn:''
};
store.insert(0,p);
}
},'-',{
text:'删除一行',
handler:function(){
Ext.Msg.confirm('系统提示','确定要删除?',function(btn){
if(btn=='yes'){
var sm = grid.getSelectionModel();
var record = sm.getSelection()[0];
store.remove(record);
}
});
}
},'-',{
text:'保存',
handler:function(){
var m = store.getModifiedRecords();//原:store.getModifiedRecords().slice(0);都可以
var jsonArray = [];
Ext.each(m,function(item){
jsonArray.push(item.data);
});
Ext.Ajax.request({
method:'POST',
url:'/extjsTest1/EditGridServlet',
success:function(response){
Ext.Msg.alert('系统提示',response.responseText,function(){
store.load();
});
},
failure:function(){
Ext.Msg.alert("错误","与后台联系的时候出了问题。");
},
params:'data='+Ext.encode(jsonArray)//原:encodeURIComponent(Ext.encode(jsonArray))都可以
});
}
}]
});
});

一、上面js代码说明

1.Ext.grid.plugin.CellEditing

plugins:[
Ext.create('Ext.grid.plugin.CellEditing',{
clicksToEdit:1 //设置单击单元格编辑(设置为2是双击进行修改)
})
],

这里我们启用了CellEditing插件,其他的部分并没有什么变化。可是看到的结果是,现在可以用TextField的方式随意修改单元格。记得不能让单元格为空,否则无法修改。

默认情况下,需要双击单元格才能激活编辑器,从而进行修改。不过,也可以给表格配置上clicksToEdit:1,这样就可以通过单击单元格激活编辑器,从而进行修改。

TextField不允许输入空值,因为在创建columns时对应的editor设置了allowBlank:false属性。allowBlank:false表示不运行在TextField中输入空值。

2.tbar

tbar:['-',{
text:'添加一行',
handler:function(){
var p ={
id:'',
name:'',
descn:''
};
store.insert(0,p);
}
},

这是Ext.panel.Panel中的配置属性,在API有这样的介绍:

因为Ext.grid.Panel继承了Ext.panel.Panel,所以继承了它的所有属性,因此可以用这个tbar。

2.1 handler

这是Ext.panel.Tool中的配置选项(Config options)中的一个属性,在API中的描述如下:

3.store.insert

这是Ext.data.ArrayStore中的方法,具体参见API。

二、后台代码

@SuppressWarnings("serial")
public class EditGridServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req,resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8"); String data = req.getParameter("data");
System.out.println(data); resp.getWriter().print(data);
}
}

打印结果:

后记:Extjs模拟java的面向对象的思想(当然和java语言不能等同,毕竟它是用javascript编写的),是一个重量级的前台框架,里面涉及到的类较多,因此查询API是了解其中的类、属性、方法等的重要途径。

ExtJS4.2学习(七)EditorGrid可编辑表格(转)的更多相关文章

  1. ExtJS学习(四)EditorGrid可编辑表格

    操作表格有一种需求,要操作表格需要动态的添加内容,删除内容以及双击的时候进入编辑状态.这个时候怎么办呢,看具体的实现吧. 双击点击的时候可以单元格的操作. 代码: <!DOCTYPE html& ...

  2. 38. ExtJS学习(四)EditorGrid可编辑表格

    转自:https://blog.csdn.net/qq_30739519/article/details/50865060

  3. ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2

    运行效果: 此文介绍了根据操作左侧菜单在右面板展示相应内容. 一.主页 先看一下跳转主页的方式:由在webapp根目录下的index.jsp跳转至demo的index.jsp 下面是demo的inde ...

  4. ExtJS4.2学习(11)可拖放的表格(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-18/180.html --------------- ...

  5. ExtJS4.2学习(13)基于表格的扩展插件---rowEditing

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/182.html --------------- ...

  6. ExtJS4.2学习(九)属性表格控件PropertyGrid(转)

    鸣谢网址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-15/178.html ------------- ...

  7. ExtJS4.2学习(八)表格限制输入数据的类型(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-14/177.html --------------- ...

  8. asp.net学习之 数据绑定控件--表格绑定控件

    原文:asp.net学习之 数据绑定控件--表格绑定控件     数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...

  9. 编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理

    编辑表格输入内容.根据input输入框输入数字动态生成表格行数.编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助! 代码如下: <!DOCTYPE ht ...

随机推荐

  1. 第一篇:groovy对DSL的语法支持

    引子 我们用一段gradle的脚本做引子,理解这一段脚本与一般的groovy代码是怎么联系起来的 buildscript { repositories { jcenter() mavenLocal() ...

  2. Servlet之过滤器

    Servlet的介绍: Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfig Filter 程序是一个实 ...

  3. 学习IT技术的技巧

    怎样学习一个知识A? (1).为什么需要A?  (*) (2).什么是A?  (*) (3).怎么使用A[最简答的]?  (*) (4).使用A时注意的问题?  (*) (5).A的应用领域. (6) ...

  4. Ghost版Win8.1系统企业版下载

    host版Win8.1系统企业版,下载完成后一定要使用校验工具验证GHO文件MD5值,如果不符请不要安装,不然安装失败后果自负.GHO文件路径一定不要带中文,否则无法安装.安装完成第一次进入桌面会黑屏 ...

  5. java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。

    import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object o ...

  6. spring事务到底用于service层还是dao层

    Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性. 事务得根据项目性质来细分:事务可以设置到三个层面(dao层.service层和web层). 第一:web层事务,这一般是针对那些安 ...

  7. Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)A蔡老板的会议

    题目描述 图灵杯个人赛就要开始了,蔡老板召集俱乐部各部门的部长开会.综合楼有N (1<=N<=1000)间办公室,编号1~N每个办公室有一个部长在工(mo)作(yu),其中X号是蔡老板的办 ...

  8. JAVA_SE复习(OOP1)

    面向对象编程(一) 一.继承 1. 在类图表示中,使用一个分为三块的矩形表示一个类.矩形的第一块表示类名,第二块描述这个类的属性及属性的数据类型,第三块描述这个类的操作,也就是方法以及返回类型.    ...

  9. JAVA_SE复习(basic)

    一.数据类型 1.基本数据类型 Ps:有效标识符:_.字母.$开头  之后可有数字 整型:byte 1 short 2 int 4 long 8  (字节) 取值范围:其范围是从负2 的该数据类型位数 ...

  10. 解决EnableVisualStyles Bug

    一位朋友碰到了一个WinForm的问题,在网上搜了一通,没找到能解决问题的方案, 正好我以前以碰到过,在这里把解决方案呈上,以便有遇到此问题的朋友能有帮助. 问题是这样的,当启用了虚拟样式后,设置好的 ...