1

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

4

2 回答 2

2

您可以使用 newstore.recordType来创建 Store 中保存的类型的新记录,并使用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);
于 2012-12-29T13:21:46.393 回答
1

问题是当我尝试插入记录时商店没有数据所以我可以在商店完全加载后插入数据

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

}
于 2012-12-31T08:41:57.967 回答