0

我的 xe:applicationLayout 在我的 demoLayout.xsp CC 中。.lotusColLeft 类中的左列宽度默认设置为 220px。我可以通过将以下 CC 添加到任何需要 300 像素宽的左列的 XPage 来手动覆盖此设置:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<style>
    .lotusColLeft { width:300px }
    .hugeWidth { width:2000px }
    .lotusContent { overflow-x: scroll; }
</style>
</xp:view>

这很好用,但我实际上需要一个 400 和 500 像素宽的左列用于某些 xpage。是的,可以像上面那样使用 3 个 CC 来做到这一点,但希望有一种更好的方法,在我将 demoLayout.xsp CC 控件添加到我的 xpage 时,我可以简单地在自定义属性中设置所需的宽度。

有任何想法吗?

4

2 回答 2

3

与其将样式标签直接放在自定义控件上,不如使用带有 escape="false" 的 Computed Field 控件(即输出为 HTML)。然后,在 value 属性中,您可以计算左列的宽度。像这样的东西对我有用:

<xp:text escape="false"><xp:this.value><![CDATA[
<style>
   .lotusColLeft {width:#{compositeData.passedWidth};}
</style>]]>
</xp:this.value></xp:text>

然后,您可以在自定义控件上添加一个passedWidth 属性并传入相关宽度。您可以变得更复杂并设置Computed Field 的loaded 属性,因此它只显示passedWidth 属性是否已设置。

于 2012-08-24T21:01:17.587 回答
1

我喜欢 Paul 的建议,但另一种方法是在您的布局自定义控件上定义两个有条件呈现的样式表资源(或仅一个,带有计算的 href)。该控件可以有一个 leftColumnWidth 属性,它接受“小”、“中”或“大”的值。如果很小,则不会呈现额外的样式表。否则,它将呈现两者之一。这样,如果您需要更改与任一相关联的确切宽度(以及可能有意义的调整以适应调整后的布局的其他元素),您只需在样式表中更改它,而无需触摸每个页面。

于 2012-08-24T22:53:30.007 回答