1

行エディターを自動ロードしてその列に値を設定したい編集可能なグリッドがあります。だから私は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

new を使用store.recordTypeして Store に保持されているタイプの新しい Records を作成し、store.insertmethod を使用して新しく作成されたレコードを追加できます。以下はコードスニペットです

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 に答える