Extjs 4.x 为GridPanel动态添加一行数据

Extjs 4.x 为GridPanel动态添加一行数据,第1张

//声明对应grid的Record对象

var ItemRecord = Ext.data.Record.create([

{name:'itemid'},

{name:'itemcode'},

{name:'itemname'},

{name:'price'},

{name:'mark'}

])

//点新增按钮时则执行类似如下函数

function addNewLine2Grid(grid){

var rec = new ItemRecord({ //实例化Record对象,并赋予各字段初始值

'itemid': 0,

'itemcode': '',

'itemname': '',

'price': 0.00,

'mark': ''

})

grid.store.insert(grid.store.getCount(), rec) //插入新行作为grid最后一行

grid.getView().refresh()//刷新

//grid.plugins[1].startEditing(grid.store.getCount()-1,4)//编辑最后一行第4列

}

function addColumn(){

var grid = Ext.getCmp('gridPanelID')

var stores = grid.getStore()

var recordType = grid.getStore().recordType

var data = new recordType()

grid.stopEditing()

stores.insert(0, data)

stores.sort()

grid.getView().refresh()

grid.startEditing(0, 0)

}

两种方法:

1, 在后台取到数据后直接加一行空数据再送到前台, 这样的话客户端不需要做任何处理

2, 在前台store.load事件中增加空行

store.on('load', function(){

var _rec = new this.recordType()

var _key = ''

//枚举所有字段, 设置默认值

for (var i = 0i <_rec.fields.keys.lengthi++){

_key = _rec.fields.keys[i]

//record对象中每个字段初次写入的值会记录在record.modified, 用于记录被修改之前的值

_rec.data[_key] = null

//第二次根据字段类型写入默认值, record.data中记录的是默认值, record.modified中记录的是null,

//如此可以在客户端提交时区分客户端新增的记录或修改的记录

switch(_rec.fields.get(_key).type){

case 'int':

_rec.set(_key, 0)

break

case 'float':

_rec.set(_key, 0.0)

break

case 'boolean':

_rec.set(_key, false)

break

default:

_rec.set(_key, '')

break

}

}

//新增记录设置两次值, 则会在每个字段左上角显示红色三角修改标志, 用来凸显新增记录

//如果不需要判断是否客户端新增记录, 去掉第一次设置空值, 直接设置默认值即可

this.add(_rec)

})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11836844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存