在 Xpages 重复控件中对齐 header 和数据列
Aligning header and data columns in Xpages Repeat Control
我创建了一个非常好的 Xpages 重复控件,但似乎无法使 header 列和数据列正确对齐。这可能不是重复的问题,因为我一直在让列的宽度正常工作方面遇到问题。
理想情况下,我希望每一列(最后一列除外)都有一个集合,并且最后一列增长到容器的宽度。如果这不可能,我只想知道最佳做法是什么。
<xp:panel>
<xp:table style="width:99.00%"
styleClass="lotusFirst lotusSort">
<xp:tr>
<xp:td style="width:150.0px">
<xp:label value="Employee" id="label1"></xp:label>
</xp:td>
<xp:td style="width:200.0px">
<xp:label value="Computer Number" id="label2"></xp:label>
</xp:td>
<xp:td>
<xp:label value="Create Date" id="label3"></xp:label>
</xp:td>
<xp:td>
<xp:label value="Create User" id="label4"></xp:label>
</xp:td>
<xp:td>
<xp:label value="ID" id="label5"></xp:label>
</xp:td>
</xp:tr>
</xp:table>
<xp:repeat id="repeat1"
rows="#{javascript:compositeData.rows}" var="rowData"
indexVar="repeatIndex" value="#{view1}">
<xp:this.facets>
<xp:text disableTheme="true" xp:key="header"
escape="false">
<xp:this.value><![CDATA[<table class='xspDataTable repeatRowColors' border='0' cellspacing='0' cellpadding='0' width='800px'>]]></xp:this.value>
</xp:text>
<xp:text disableTheme="true" xp:key="footer"
escape="false">
<xp:this.value><![CDATA[</table>]]></xp:this.value>
</xp:text>
</xp:this.facets>
<xp:tr id="rowDataContainer">
<xp:td style="width:150px">
<xp:link escape="true" id="link1"
value="/xpFormPCBuild.xsp">
<xp:this.text><![CDATA[#{javascript:rowData.getColumnValue("employeeName")}]]></xp:this.text>
</xp:link>
</xp:td>
<xp:td style="width:200px">
<xp:text escape="true" id="computedField2">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("computerName");}]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td style="width:200px">
<xp:text escape="true" id="computedField3">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("CrtDte");}]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td style="width:200px">
<xp:text escape="true" id="computedField4">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("crtUsr");}]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td style="width:250px">
<xp:text escape="true" id="computedField5">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("ID");}]]>
</xp:this.value>
</xp:text>
</xp:td>
</xp:tr>
</xp:repeat>
</xp:panel>
布莱恩,
您需要将 table header 代码放入 header 方面。基本上你现在正在做 2 tables 而不是一个。那应该可以解决您的问题。
此代码生成的标记无效,因为 <TR>
元素在 table 之外。如果将结束 <TABLE>
标记移动到重复控件之后,table 列将正确对齐。只需确保重复中 <TD>
的数量与 header.
中的数量完全相同
我创建了一个非常好的 Xpages 重复控件,但似乎无法使 header 列和数据列正确对齐。这可能不是重复的问题,因为我一直在让列的宽度正常工作方面遇到问题。
理想情况下,我希望每一列(最后一列除外)都有一个集合,并且最后一列增长到容器的宽度。如果这不可能,我只想知道最佳做法是什么。
<xp:panel>
<xp:table style="width:99.00%"
styleClass="lotusFirst lotusSort">
<xp:tr>
<xp:td style="width:150.0px">
<xp:label value="Employee" id="label1"></xp:label>
</xp:td>
<xp:td style="width:200.0px">
<xp:label value="Computer Number" id="label2"></xp:label>
</xp:td>
<xp:td>
<xp:label value="Create Date" id="label3"></xp:label>
</xp:td>
<xp:td>
<xp:label value="Create User" id="label4"></xp:label>
</xp:td>
<xp:td>
<xp:label value="ID" id="label5"></xp:label>
</xp:td>
</xp:tr>
</xp:table>
<xp:repeat id="repeat1"
rows="#{javascript:compositeData.rows}" var="rowData"
indexVar="repeatIndex" value="#{view1}">
<xp:this.facets>
<xp:text disableTheme="true" xp:key="header"
escape="false">
<xp:this.value><![CDATA[<table class='xspDataTable repeatRowColors' border='0' cellspacing='0' cellpadding='0' width='800px'>]]></xp:this.value>
</xp:text>
<xp:text disableTheme="true" xp:key="footer"
escape="false">
<xp:this.value><![CDATA[</table>]]></xp:this.value>
</xp:text>
</xp:this.facets>
<xp:tr id="rowDataContainer">
<xp:td style="width:150px">
<xp:link escape="true" id="link1"
value="/xpFormPCBuild.xsp">
<xp:this.text><![CDATA[#{javascript:rowData.getColumnValue("employeeName")}]]></xp:this.text>
</xp:link>
</xp:td>
<xp:td style="width:200px">
<xp:text escape="true" id="computedField2">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("computerName");}]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td style="width:200px">
<xp:text escape="true" id="computedField3">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("CrtDte");}]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td style="width:200px">
<xp:text escape="true" id="computedField4">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("crtUsr");}]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td style="width:250px">
<xp:text escape="true" id="computedField5">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("ID");}]]>
</xp:this.value>
</xp:text>
</xp:td>
</xp:tr>
</xp:repeat>
</xp:panel>
布莱恩, 您需要将 table header 代码放入 header 方面。基本上你现在正在做 2 tables 而不是一个。那应该可以解决您的问题。
此代码生成的标记无效,因为 <TR>
元素在 table 之外。如果将结束 <TABLE>
标记移动到重复控件之后,table 列将正确对齐。只需确保重复中 <TD>
的数量与 header.