我在使用过滤插件时没有调用拉力网格列渲染时遇到问题。
首次进入页面时,它可以正常工作,甚至是过滤。但是,如果我进行页面刷新(浏览器F5或转到另一页面并返回),则不会调用渲染器功能。
这是一个错误或功能吗?
我可以强制以某种方式调用渲染器函数,例如,在商店加载事件中吗?
这是一个显示行为的小例子;
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function () {
Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: ['PortfolioItem/Initiative'],
enableHierarchy: true
}).then({
success: this._onStoreBuilt,
scope: this
});
},
_onStoreBuilt: function (store) {
var modelNames = ['PortfolioItem/Initiative'];
var context = this.getContext();
this.add({
xtype: 'rallygridboard',
context: context,
modelNames: modelNames,
toggleState: 'grid',
plugins: [
'rallygridboardaddnew',
{
ptype: 'rallygridboardfieldpicker',
headerPosition: 'left',
modelNames: modelNames,
stateful: true,
stateId: context.getScopedStateId('grid-fields')
},
{
ptype: 'rallygridboardinlinefiltercontrol',
inlineFilterButtonConfig: {
stateful: true,
stateId: context.getScopedStateId('grid-filters'),
modelNames: modelNames,
inlineFilterPanelConfig: {
quickFilterPanelConfig: {
defaultFields: [
'ArtifactSearch',
'State'
]
}
}
}
}
],
gridConfig: {
store: store,
columnCfgs: [
'Name',
'State',
{
text: 'Refined',
dataIndex: 'RefinedEstimate',
renderer: function (value) {
console.log("RefinedEstimate:renderer");
return value + " EUR";
}
}
]
},
height: this.getHeight()
});
}
});
答案 0 :(得分:0)
如果在gridconfig中将alwaysShowDefaultColumns设置为true,该怎么办?
gridConfig: {
alwaysShowDefaultColumns: true
}
答案 1 :(得分:0)
我一直在玩不同的选项,实际上我认为它与网格板有关,而不是插件。
我已经创建了一个相当简单的网格板,我可以在其上重现这个问题。
复制步骤;
现在不再调用自定义渲染器功能。
我尝试过使用拉力网格,但这里的渲染效果还不错。
Bare-bone RallyGrid代码
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function () {
console.log("launch()");
Ext.create('Rally.data.wsapi.TreeStoreBuilder').build({
models: ['PortfolioItem/Initiative'],
autoLoad: true,
enableHierarchy: true
}).then({
success: this._onStoreBuilt,
scope: this
});
},
_onStoreBuilt: function (store) {
console.log("_onStoreBuilt()");
var modelNames = ['PortfolioItem/Initiative'];
var context = this.getContext();
var me = this;
var myGrid = me.add({
xtype: 'rallygridboard',
context: context,
modelNames: modelNames,
toggleState: 'grid',
gridConfig: {
store: store,
alwaysShowDefaultColumns: true,
columnCfgs: [
'Name',
'State',
{
text: 'Refined',
dataIndex: 'RefinedEstimate',
renderer: function (value) {
console.log("RefinedEstimate:renderer");
return value + " EUR";
}
},
{
text: 'Department (Yrs)',
xtype: 'templatecolumn',
tpl: '{RefinedEstimate} ({Name})'
}
]
},
height: me.getHeight()
});
}});
答案 2 :(得分:0)
问题似乎是你没有获取你想要显示的字段。
如果在进行第一次TreeStore构建时没有指定“获取”列表,则SDK将恢复为默认字段集(即不是所有字段)。在执行网格时,该字段不存在,因此无法获取数据,因此无需调用渲染器。
如果在enableHierarchy之后添加一行“fetch:true”,它可能会破灭。如果您不想获取所有字段,请指定要获取的字段数组。例如: fetch:['FormattedID','ObjectID','RefinedEstimate','InitialEstimate']
答案 3 :(得分:0)
我已经确认这是一个错误。
由于专注于使用React的新框架,因此可能不被优先考虑。