我有一个可编辑的网格我想要自动加载roweditor并在该列中设置一些值。所以我写了一个函数调用RowAdd()
RowAdd = function(){
var grid = this.gridPtnr;
var ds = grid.getStore();
var roweditor = Ext.getCmp(grid.getId() + "_roweditor");
var dt = new Date();
var rec = new ds.recordType({ }, "new" + dt.format('U'));
rec.set('USER_ID', '<?php echo $user_id; ?>');
rec.set('COUNTRY_ID', '<?php echo $county_id; ?>');
ds.insert(0, rec);
grid.getView().refresh();
grid.getSelectionModel().selectRow(0);
roweditor.startEditing(0);
}
这个方法给我的一些错误,因为当我尝试向网格添加新行时不加载网格数据。但我在正常工作的ds.insert(0, rec);
行之前添加了延迟时间。延迟对我来说不是完美的解决方案,不依赖于客户端PC。任何人都知道如何在网格数据满载后添加行请帮助我。
答案 0 :(得分:2)
您可以使用新的store.recordType
创建商店中保存类型的新记录,并使用store.insert
方法添加新创建的记录。以下是代码段
var recordData = {
colum1: 0,
colum2: 'string data',
colum3: 0
};
var recId = 3; // provide unique id
var p = new store.recordType(recordData, recId); // create new record
grid.stopEditing();
store.insert(0, p); // insert a new record into the store (also see add)
grid.startEditing(0, 0);
答案 1 :(得分:1)
问题是当我尝试插入记录时Store没有数据所以我可以在商店完全加载后插入数据
RowAdd = function(){
var grid = this.gridPtnr;
var ds = grid.getStore();
var roweditor = Ext.getCmp(grid.getId() + "_roweditor");
var dt = new Date();
var rec = new ds.recordType({ }, "new" + dt.format('U'));
rec.set('USER_ID', '<?php echo $user_id; ?>');
rec.set('COUNTRY_ID', '<?php echo $county_id; ?>');
ds.load({
callback : function(r, options, success) {
ds.insert(0, rec);
grid.getView().refresh();
grid.getSelectionModel().selectRow(0);
roweditor.startEditing(0);
}
});
}