extjs--grid动态添加一行和删除一行:

(1)选择rowEditing时,添加一行后的编辑方式为----startEdit(record,columnHeader)
(2)选择cellEditing时,添加一行后的编辑方式为----startEditByPosition(object position)
Ext.onReady( function() {
var store=Ext.create('Ext.data.Store', {
fields:['id','name','email','phone'],
data:[{
'id':"1",
'name':'one',
'email':'one@.com',
'phone':'123321123'
},{
'id':"2",
'name':'two',
'email':'two@.com',
'phone':'456654321'
},{
'id':"3",
'name':'there',
'email':'there@.com',
'phone':'789987321'
}]
});
 
(1)rowEditing:
var rowEditing=Ext.create('Ext.grid.plugin.RowEditing', {
clicksToEdit:2,
cancelEdit: function(grid) {//添加一行数据时,如果没有点击update而是点击cancel,则此行数据不会加入到store中
var me = this;
if (me.editing) {
me.getEditor().cancelEdit();
var record=me.context.record;//包含属性如下:grid,record,field,value,row,column,rowIdx,colIdx,view,store
var id=record.data.id;
if(id==''){//id是由后台自动生成的,如果id不存在,则说明是通过页面的添加按钮直接添加的,还没有存入到后台数据库中,可以直接在页面删除
var grid=me.context.grid;
var items=grid.getSelectionModel().getSelection();
Ext.each(items,function(item){
store.remove(item);
})
}
}
},
listeners: {
edit: function(e) {
if(e.record.data.id){//id由后台自动生成,编辑时
//有id,则说明是更新数据库。
}else{
//无id,则说明是向数据库中插入一条记录
}
e.record.data.name;
e.record.data.email;
e.record.data.phone;
}
}
});
 
var grid=Ext.create('Ext.grid.Panel', {
title:'grid添加数据与删除数据',
width:400,
height:300,
store:store,
multiSelect: true,
bodyPadding:10,
renderTo:Ext.getBody(),
columns:[{
header:'姓名',
dataIndex:'name',
flex:1,
editor:'textfield'
},{
header:'邮箱',
dataIndex:'email',
flex:1,
editor:'textfield'
},{
header:'电话',
dataIndex:'phone',
editor:'textfield'
}],
selType:'rowmodel',
plugins:[rowEditing],
tbar:[{
text:'添加',
handler: function() {
var data=[{
'id':'',
'name':'testrow',
'email':'testrow@.com',
'phone':'123456'
}];
store.insert(0,data);//可以自定义在stroe的某个位置插入一行数据。
//store.loadData(data,true);//在store的最后添加一行数据
rowEditing.cancelEdit();
rowEditing.startEdit(0,0);
 
}
},'-',{
text:'删除',
handler:function(){
var records=grid.getSelectionModel().getSelection();
Ext.each(records,function(record){
//先通过ajax从后台删除数据,删除成功后再从页面删除数据
store.remove(record);
})
}
}]
});
})
 
(2)cellEditing
var cellEditing=Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit:2,
listeners: {
edit: function(editor,e) {
if(e.record.data.id) {//id由后台自动生成,编辑时
//有id,则说明是更新数据库。
} else {
//无id,则说明是向数据库中插入一条记录
}
e.record.data.name;
e.record.data.email;
e.record.data.phone;
}
}
});
 
var grid=Ext.create('Ext.grid.Panel', {
title:'grid添加一行数据与删除一行数据',
width:400,
height:300,
store:store,
bodyPadding:10,
renderTo:Ext.getBody(),
columns:[{
header:'姓名',
dataIndex:'name',
flex:1,
editor:'textfield'
},{
header:'邮箱',
dataIndex:'email',
flex:1,
editor:'textfield'
},{
header:'电话',
dataIndex:'phone',
editor:'textfield'
}],
selType:'cellmodel',
plugins:[cellEditing],
tbar:[{
text:'添加',
handler: function() {
var data=[{
'id':'',
'name':'testrow',
'email':'testrow@.com',
'phone':'123456'
}];
store.insert(0,data);//可以自定义在stroe的某个位置插入一行数据。
//store.loadData(data,true);//在store的最后添加一行数据
cellEditing.cancelEdit();
cellEditing.startEditByPosition({row:0,column:0});
 
}
},'-',{
text:'删除',
handler: function() {
var records=grid.getSelectionModel().getSelection();
Ext.each(records, function(record) {
//先通过ajax从后台删除数据,删除成功后再从页面删除数据
store.remove(record);
})
}
}]
});
 

//tabs2.on('tabchange', function (tabPanel, newCard, oldCard) {
// if (newCard.title == "Admin") {
// // 获得iframe的window对象
// var contentWnd = newCard.getEl().query('iframe')[0].contentWindow;
// // 如果是第一次加载,则window.Ext对象为undefined
// if (typeof contentWnd.Ext != 'undefined') {

// contentWnd.loadData(); // 操作标签页中的元素
// }
// }
//});

ext4 grid edit 添加删除行的更多相关文章

  1. 超级简单的jquery操作表格(添加/删除行、添加/删除列)

    利用jquery给指定的table添加一行.删除一行 <script language="javascript" src="./jquery.js"> ...

  2. ASP.NET给Table动态添加删除行,并且得到控件的值

    ASP.NET给Table动态添加控件并且得到控件的值 由于跟老师做一个小的项目,可是我自己又不太懂js,所以一直为动态建立表格并且能动态的取值和赋值感到苦恼.起初在网上找到了一些js资源,解决了动态 ...

  3. 为11.2.0.2 Grid Infrastructure添加节点

    转自:http://www.askmaclean.com/archives/add-node-to-11-2-0-2-grid-infrastructure.html 在之前的文章中我介绍了为10g ...

  4. Grid中添加链接,打开选项卡页面

    如何在grid中点击,添加一个选项卡并打开页面        function addeditnew(id, title)         {                     var node ...

  5. 复杂表格的树形结构的添加删除行div实现

    公司倒闭,换了工作,无奈选择了做外包这个差事,大公司进不去,小公司工资太低,可能也只能如此了.但无奈之举,亦不可浪费时间,多多磨练自己吧! 众所周知,做外包项目,其实就是做一些大公司的内部系统,多以管 ...

  6. 【转】为Xcode添加删除行、复制行快捷键

    原文网址:http://www.jianshu.com/p/cc6e13365b7e 在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键.而恰巧Xcode不支持这两个快捷键,再一次的恰巧让 ...

  7. (转)为Xcode添加删除行、复制行快捷键

    转摘链接:http://www.jianshu.com/p/cc6e13365b7e 在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键.而恰巧Xcode不支持这两个快捷键,再一次的恰巧让 ...

  8. js动态添加删除行,兼容ie和火狐

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Extjs3.4 grid中添加一列复选框

    var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel( [ sm, new Ext.gri ...

随机推荐

  1. PHP 文件写入或追加数据

    PHP file_put_contents() 函数是一次性向文件写入字符串或追加字符串内容的最合适选择. file_put_contents() file_put_contents() 函数用于把字 ...

  2. CommandBehavior.CloseConnection的使用

    CommandBehavior.CloseConnection的使用 分析问题 由于流模式读取数据库的特点,在具体应用时很难确定数据库连接何时才能被关闭,因为读取的动作是连续进行的,下面是一个常见的数 ...

  3. 利用ARM批量自动化创建SSD多磁盘RAID0虚拟机

    在实际生产环境大规模部署的时候,有时需要能批量创建多台Linux虚拟机,并且该虚拟机带多个硬盘,一些数据库环境,比如MySQL和MongoDB等,会需要超过10000de IOPS, 那么创建的虚拟机 ...

  4. unexpected problem

    一个比较有趣的字符串问题,问题描述如下 大体意思就是给定一个字符串s以及一个整数m,找出一个能满足以上三个条件的字符串t的个数对10e9 + 7 取余输出. 第二三条是关键,t.s = s.t 举个例 ...

  5. Activity 模版样式简介

    1:对话框样式. <activity android:theme="@android:style/Theme.Dialog"> 2:透明样式. <activity ...

  6. 这样就算会了PHP么?-3

    关于循环,IF,WHILE.... <?php $month = date("n"); $today = date("j"); if ($today &g ...

  7. FJ省队集训DAY2 T1

    思路:转换成n条三维空间的直线,求最大的集合使得两两有交点. 有两种情况:第一种是以某2条直线为平面,这时候只要统计这个平面上有几条斜率不同的直线就可以了 还有一种是全部交于同一点,这个也只要判断就可 ...

  8. Cmake ,Out of Source Build

    Out of Source build呢,就是让Cmake产生的临时垃圾文件,不关乎于项目实际本身的文件放到一个目录里,一般我们把这个目录放在项目根目录(也可以认为是根CmakeLists.txt)下 ...

  9. js实现编码,解码

    <p><script type="text/javascript">// <![CDATA[var decToHex = function(str) ...

  10. 【转】64位win7硬盘安装64位ubuntu 13.04

    原文网址:http://www.cnblogs.com/jiangz/p/3751617.html 最近本来是准备通过升级的方式把ubuntu从12.04升级到12.10再升级到13.04的,但是升级 ...