2013-07-22 35 views
5

'da grid'e programlı olarak eklendikten sonra geçiş Yapma ExtJS 4.2.1 kullanıyorum ve oldukça basit bir kurulum yapıyorum: JSON tabanlı mağaza ve bu mağazadan okuyan bir ızgarapanel. Bir ekleme düğmesinin tıklama olayı, aşağıdaki işleve çağrılır.Hücre düzenleyicisini ExtJS

Amacım, ızgaraya boş bir satır eklemek ve hemen ızgarapanelde etkinleştirilen Ext.grid.plugin.CellEditing eklentisini kullanarak düzenlemeye başlamaktır.

var addNewRow = function() { 
    // start add logic 
    var row = { 
    'name': '', 
    'email': '', 
    'description': '' 
    }; 
    store.add(row); 

    // start auto-edit logic 
    var index = store.indexOf(row); // -1 
    var grid = Ext.ComponentQuery.query('gridpanel[itemId=upperPane]')[0]; 
    var plugin = grid.getPlugin('upperPaneEditor'); 
    plugin.startEdit(index, 0); 
}; 

Bu hata ayıklanırken, dizin -1 olarak ayarlanır ve bu çalışmaz. İlk satırın ilk sütununu düzenlemek için plugin.startEdit() işlevini (0, 0) ile test ettim ve iyi çalışıyor. Devam etsin diye çeşitli olay işleyicileri için otomatik düzenleme mantığı olsun deneyin hareketli çalıştı:

  • mağazanın add olay ekleme sonra ateş ve doğru endeksi yansıyan ama eleman için gridpanel henüz mevcut değildi onu almak için eklenti.
  • gridpanel en afterrender olay gridpanel en add olayı harekete eklenti
  • sonra ateş etmedi ama sadece bir hücreye çift tıklayarak sonra elle düzenleyin. Aynı zamanda kendi içinde bir döngü içinde sona erdi.

Bu noktada başka hangi denemeleri yapacağınızdan emin değilim.

cevap

1

row model bir model nesnesi değil, bir model örneğidir, bu nedenle store.indexOf -1 döndürür.

Dene:

var inst = store.add(row)[0]; 
... 
var index = store.indexOf(inst); 
+0

Müthiş çalıştı. Teşekkürler! – anjunatl