2012-12-24 50 views
1

我有一個可編輯的網格我想自動加載roweditor並在該列中設置一些值。所以我寫了funcation呼叫RowAdd()如何檢查所有的數據加載befere負載添加新的行到網格(ExtJS 3.2)

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

當我之前'DS添加報警.insert(0,rec);'正常工作的線路 – Duleep

回答

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

} 
2

您可以使用新的store.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); 
+0

感謝您的幫助 – Duleep