如何检查所有数据加载befere load将新行添加到网格中(ExtJS 3.2)

时间:2012-12-24 08:19:44

标签: extjs3

我有一个可编辑的网格我想要自动加载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。任何人都知道如何在网格数据满载后添加行请帮助我。

2 个答案:

答案 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);
                    }
      });

}