ExtJS

2012-01-03 8 views
5

'da grid sırasının seçilmesi/seçilmesi Ext JS'ye yeni çıkıyorum. Satırlardan herhangi birini seçtiğimde/tıklattığımda, seçili satırla ilgili belirli verilerin ızgaranın altındaki panelde görüntülendiği bir ızgara paneli üzerinde çalışıyorum. Ayrıca pencere yüklendiğinde, ilk önce varsayılan olarak seçili/vurgulanmalıdır. Şu anda ızgara & panosu doğru şekilde görüntüleniyor. Seçilen satırla ilgili veriler bile panelde görüntülenir ancak satır vurgulanmıyor. grid.focusRow(0) & grid.getRow(0).highlight() yöntemlerini denedim, ancak çalışmıyorlar. Aşağıda benim kodum. veri deposundanExtJS

//the js file code 
initComponent : function() { //within the window instance 

    var single = false; 
    var store = new Ext.data.XmlStore({//all necessary fields added}); //store 
    HttpUtil.syncCall(this.url, "GET", this.loadStore, store,this); 
    var acctTplMarkup = [//the fields here are displayed on row selection ]; 
       /*The template for displaying the details of the selected row */ 
       this.acctTpl = new Ext.Template(acctTplMarkup); 
    //check for request type, if type is range of checks create the grid 
    if (single == false) { 
     var gridView = new Ext.grid.GridView(); 
     var colModel = new Ext.grid.ColumnModel([ { 
      header : 'Status', 
      dataIndex : 'status' 
     }, { 
      header : 'Message', 
      dataIndex : 'message' 
     } ]); 
     var selModel = new Ext.grid.RowSelectionModel({ 
      singleSelect : true 
     }); 
     grid = new Ext.grid.GridPanel({ 
              ... 
         listeners : { 
       render : function(grid) { 
        Ext.getCmp('check').store.on('load',function(store, records, options) { //check is the id value for the window instance 
         grid.getSelectionModel().selectFirstRow(); 
        }); 
       } 
      } 
    }); //gridPanel 
    } //if 
    /* If request type is range select then display the grid */ 
       ... 
    if (single == false) { 
    grid.getSelectionModel().on('rowselect', function(sm, rowIdx, r) { 
Ext.getCmp('check').acctTpl.overwrite(Ext.getCmp('detailPanel').body, r.data); 
     }); //rowselect 
    } //if 

    Ext.apply(this, { 
            ... 
      listeners : { 
      'afterrender' : function(){ 
      Ext.getCmp('check').acctTpl.overwrite(Ext.getCmp('detailPanel').body, this.store.getAt(0).data,true); 
      } 
     } 
    }); 
    Check.superclass.initComponent.apply(this, arguments); 

}, //initComponent 

veri & düzgün görüntülenen ama sadece satır vurgulanır değil yüklenir. Nerede yanlış gittiğimi söyleyen var mı?

cevap

10

Ext.grid.GridPanel'da getRow yöntemi yoktur. Bununla birlikte, Ext.grid.GridView'da bir tane var.

aşağıdakileri yapmanız gerekir satırı vurgulamak için:

var row = grid.getView().getRow(0); // Getting HtmlElement here 
Ext.get(row).highlight(); // Getting element wrapper and using its "highlight" method 

Eğer ızgaranın SelectionModel kullandığınız satır seçimini gerçekleştirmek için: seçimini kullanın

grid.getSelectionModel().selectRow(0) 
+0

Cevabınız için teşekkürler. Bu yöntemleri denedim ama çalışmıyorlar. Kılavuzum tamamlandı ama bir şekilde ilk satırı vurgulayamıyorum. Başka yolu var mı? –

+0

Belirtilen yöntemlerle ilgili herhangi bir hata mı alıyorsunuz? Mümkün olan tüm geçici çözümler, gelecekte size ek sorunlar getirecektir, bu nedenle, kendi başına yapılmış bir şeyi denemeden önce mevcut yolu çalışma deneyimini daha iyi deneyebilirsiniz. – Li0liQ

+2

'getView(). GetRow' ExtJS 4'te yok; getView(). getNode' kullanın. –

1

belli indeksinde bir satırı seçmek için modeli.

Ext.grid.GridPanel.getView().getSelectionModel().select(index); 
6

Bileşen: Ext.grid.Panel

Versiyon: 4.0.0

bir öğe seçin ve önceki seçimi kaldırmak için:

grid.getSelectionModel().select(0); 

birini seçin öğe ve önceki seçimi sakla:

grid.getSelectionModel().select(0, true); 
+0

Harika :) benim için iyi çalışıyor teşekkürler :) –