Bir mağazadan doldurduğum bir ExtJS (4.0.7) GridPanel sahibim. GridPanel'in sütununda görüntülediğim değerlerin, kayıttaki verilerin türüne bağlı olarak farklı bir görünüme sahip olması gerekir.ExtJS 4 GridPanel Sütun Ext.create ile dinamik bileşenleri oluşturma
Nihai hedef, kaydın type
özelliğinin "çift" veya "tamsayı" değerine sahip kayıtlarının, kullanıcıya ayarlayabilecekleri bir kaydırma çubuğu sunması ve "dize" türünün salt okunur metin oluşturmasıdır.
Bunu yapmak için özel bir sütun oluşturdum. Oluşturucudaki türü inceler ve ne oluşturulacağını belirler.
Aşağıdaki kodla birlikte çalışan "dize" sorunum var, ancak dinamik olarak sütunda daha karmaşık kaydırıcı denetimini oluşturabilir ve oluşturabilirim.
Bu basitleştirilmiş örnek, bir Panel
içinde bir tarih denetimiyle render etmeye çalışıyorum, sanki o şeyi başarabiliyormuş gibi, kayan öğelerin kalanını anlayabiliyorum. Gerçekten is Sorunum
Ext.define('MyApp.view.MyColumn', {
extend: 'Ext.grid.column.Column',
alias: ['widget.mycolumn'],
stringTemplate: new Ext.XTemplate('code to render {name} for string items'),
constructor: function(cfg){
var me = this;
me.callParent(arguments);
me.renderer = function(value, p, record) {
var data = Ext.apply({}, record.data, record.getAssociatedData());
if (data.type == "string") {
return me.renderStringFilter(data);
} else if (data.type == "double" || data.type == "integer") {
return me.renderNumericFilter(data);
} else {
log("Unknown data.type", data);
};
},
renderStringFilter: function(data) {
// this works great and does what I want
return this.stringTemplate.apply(data);
},
renderNumericFilter: function(data) {
// ***** How do I get a component I "create" to render
// ***** in it's appropriate position in the gridpanel?
// what I really want here is a slider with full behavior
// this is a placeholder for just trying to "create" something to render
var filterPanel = Ext.create('Ext.panel.Panel', {
title: 'Filters',
items: [{
xtype: 'datefield',
fieldLabel: 'date'
}],
renderTo: Ext.getBody() // this doesn't work
});
return filterPanel.html; // this doesn't work
}
});
, nasıl Ext.create
bir bileşenidir ve bu gridpanel bir sütuna oluşturulmasını sağlayabilirsiniz? Böyle
teşekkür:
Bu
den değiştirilir. Yapabilseydim tüm puanlarınızı (veya elden çıkarabildiğimden daha fazla puan) verirdim, ama sanırım John Rice'ın cevabı, işleyicide açık gecikme olmadan aradığımın en yakın cevabı. –