1
我有一個由商店填充的列表項。一旦商店加載,列表似乎不會調整到合適的高度。高度實際上是零。加載商店後,你們有沒有建議讓列表重新計算其高度?由於未定義高度,列表項不會顯示
我的觀點:
xtype: 'fieldset',
cls: 'damage-list-fieldset',
margin: '',
itemId: 'damageFieldSet',
flex: 1,
layout: {
type: 'fit'
},
items: [
{
xtype: 'list',
action: 'showNotes',
cls: 'damage-list',
itemCls: 'x-list-item-label',
itemId: 'DamageList',
disableSelection: true,
height: 'auto',
emptyText: 'No damage has been reported',
itemTpl: [
'<table border="0" width="100%">',
' <tr>',
' <td class="part" width="30%">{part}</td>',
' <td class="note" width="30%">{date}</td>',
' <td class="type" width="30%">{type}</td>',
' <td class="note" width="10%"><div class="count">{noteCount}</div></td>',
' </tr>',
'</table>',
''
],
store: 'Damage',
grouped: true,
onItemDisclosure: false
}
]
},
我意識到itemTpl不應該有它的表,但我們忽略了現在。
下面是我目前如何強制它的工作。我從控制器存儲負載回調中推高。
Ext.getStore('Damage').load({
params: {repairOrderId: this.repairOrderId},
callback: function(records, operation, success) {
if(records.length) {
report.getComponent('noteInstruction').setHidden(records.length == 0);
/* Calculate the height of the damage rows and set it*/
var location = new Array();
var locationCount = 0;
for(var i = 0; i < records.length; i++) {
if(location.indexOf(records[i].data.location) < 0) {
location.push(records[i].data.location);
locationCount++;
}
}
var damageRow = 54;
var damageHeader = 56;
var damageHeight = (records.length * damageRow) + (locationCount * damageHeader);
report.getComponent('damageFieldSet').getComponent('DamageList').setHeight(damageHeight);
report.getComponent('damageFieldSet').getComponent('DamageList').setScrollable(false);
}
Ext.Viewport.setMasked(false);
},
scope: this
});
不是很優雅,因爲我只是在設定的高度干擾。
所以問題是,在從商店獲取記錄後,如何強制清單重新繪製其高度?
'fieldset'的容器是什麼?如果您將該容器的佈局設置爲「適合」,那麼該列表應該可以自行工作。 – kevhender
我已經嘗試過,不幸由於某種原因頁面上的按鈕展開以適合整個頁面,並且字段集根本不顯示 – infinityLoop
您是否意味着該列表根本不可見,因爲它的高度?還是你想要實現的東西? – rixo