2016-04-01 15 views
1

Grid sütunlarında combobox ve datefield görüntüleme gereksinimim var. Böylece widgetcolumn ve bu alanlar ile ızgara oluşturdu.Grid Widget sütunu - Widget üzerinde değişiklik, ızgara deposunun nasıl güncelleneceği

Ancak şimdi açılan kutuda veya tarih alanında veri değiştiğinde, yeni değerler ızgara deposunda güncellenmelidir; böylece sonraki sayfaya gidip geri geldikten sonra değerler önceki sayfalarda da devam etmelidir.

Birisi bunu nasıl başarabileceğimi bana bildirebilir mi?

Fiddle: https://fiddle.sencha.com/#fiddle/183r

cevap

4

Seçenek1: Her iki Widget ve hücre düzenleyici kullanın.

CellEditing eklentisini ekleyin ve düzenleyiciyi widget ile aynı bileşene ayarlayın.

{ xtype: 'widgetcolumn', text: 'Gender', dataIndex: 'gender', flex: 1, 
        widget: { xtype: 'combo', store: genderStore, displayField: 'name', valueField: 'value'}, 
        editor: { xtype: 'combo', store: genderStore, displayField: 'name', valueField: 'value'} 
}, 

Örnek: https://fiddle.sencha.com/#fiddle/1843

2. seçenek: Manuel kayıt güncelleme.

Bu çözümün daha iyi olduğunu hissediyorum.

widget: {xtype: 'datefield', 
      listeners:{ 
       select: function(datefield, value, eOpts){ 
        var rowIndex = datefield.up('gridview').indexOf(datefield.el.up('table')); 
        var record = datefield.up('gridview').getStore().getAt(rowIndex); 
        record.set('dob', value); 
       } 
      } 
     } 

Örnek: https://fiddle.sencha.com/#fiddle/1842

widgetColumn içinde RowIndex almak için ben "How to get rowIndex in extjs widget column" DrakeES's answer başvurulan.

1

Bulabildiğim en iyi çözüm. "getWidgetRecord" işlevi arama ile değiştirilemez. Widget yapılandırma açıklaması içinde tanımlanmıştır. Aşağıdaki Bağlantılara bir göz atın.

http://docs.sencha.com/extjs/5.1.3/Ext.grid.column.Widget.html#cfg-widget http://docs.sencha.com/extjs/6.0.2-classic/Ext.grid.column.Widget.html#cfg-widget

bir xtype içeren bir yapılandırma nesnesi.

Bu, bu sütunun hücrelerine işlenen parçacıkları veya bileşenleri oluşturmak için kullanılır.

Bu sütunun verileriIndex, widget/bileşenin defaultBindProperty öğelerini güncellemek için kullanılır.

Widget 2 yöntemle dekore edilir: getWidgetRecord - Widget ile ilişkili Ext.data.Model öğesini döndürür. getWidgetColumn - Widget ile ilişkili Ext.grid.column.Widget öğesini döndürür.

widget:{ 
    xtype:'combo', 
    editable: false, 
    store: Ext.create('Ext.data.Store',{ 
     fields:['name','text'], 
     data:[ 
      {"name":"integer", "text":"Integer"}, 
      {"name":"float","text":"Float"} 
     ] 
    }), 
    listeners:{ 
     select: function(combo, value, eOpts){ 
      var record = combo.getWidgetRecord(); 
      record.set('type', value.get('name')); 
     } 
    }, 
    valueField:'name', 
    displayField:'text', 
    allowBlank: false 
} 

veya

widget: { 
    xtype: 'textfield', 
    allowBlank: false, 
    listeners:{ 
     change: function(textfield, value, eOpts){ 
      var record = textfield.getWidgetRecord(); 
      record.set('field', value); 
     } 
    } 
}