XPages。隐藏 DataTable 中的列
XPages. Hide column in DataTable
我试图隐藏数据表中的一列,但不起作用。只隐藏 header。在示例中,我尝试隐藏第一列。多米诺骨牌 9.0.1.
我弄错了还是bug?
我知道该列的 "display: none",但我有很多数据,并且未呈现列保存我的本地性能
<xp:dataTable id="dataTable1" rows="30" var="item">
<xp:this.value><![CDATA[#{javascript:var collection = [];
for( var i = 0; i < 10; i++ ) {
var obj = {};
obj.name = "Name" + i;
obj.key = "Key" + i;
collection.push( obj );
}
return collection;}]]></xp:this.value>
<xp:column id="column1" rendered="false">
<xp:this.facets>
<xp:span xp:key="header">Name</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField1"
value="#{item.name}">
</xp:text>
</xp:column>
<xp:column id="column2">
<xp:this.facets>
<xp:span xp:key="header">Key</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField2" value="#{item.key}"></xp:text>
</xp:column>
</xp:dataTable>
我可以确认我得到了完全相同的行为。我同意我希望整个专栏都不会呈现,但这显然不是它的行为。我一直将 xp:dataTable 控件视为稍微打扮的 xp:repeat,但没有那么多 window 打扮作为 xp:viewPanel 控件和 the Domino Designer wiki page on xp:dataTable 对任何细节和我的 Mastering XPages 第 2 版都没有帮助。也不会在 xp:dataTable.
上详细介绍
还值得注意的是,在 xp:text 字段上设置 rendered 属性 仍然会构建第一个每行中的单元格,无论第一个
是否被抑制。我猜 xp:dataTable 控件构建 HTML 元素的方式有些奇怪。
我的建议是切换到 xp:repeat 控件,这样您就可以更好地控制整个过程。调整你的代码,它会有点像这样:
<xp:table>
<xp:tr>
<xp:td>Name</xp:td>
<xp:td>Key</xp:td>
</xp:tr>
<xp:repeat
id="repeat1"
rows="30"
var="item">
<xp:this.value><![CDATA[#{javascript:var collection = [];
for( var i = 0; i < 10; i++ ) {
var obj = {};
obj.name = "Name" + i;
obj.key = "Key" + i;
collection.push( obj );
}
return collection;}]]></xp:this.value>
<xp:tr>
<xp:td
rendered="false">
<xp:text
escape="true"
id="computedField1"
value="#{item.name}">
</xp:text>
</xp:td>
<xp:td>
<xp:text
escape="true"
id="computedField2"
value="#{item.key}">
</xp:text>
</xp:td>
</xp:tr>
</xp:repeat>
</xp:table>
请注意,要同时设置用作 header 标签的单元格的渲染 属性(代替
它将渲染为 ),您'将需要单独管理 属性 可见性。
我试图隐藏数据表中的一列,但不起作用。只隐藏 header。在示例中,我尝试隐藏第一列。多米诺骨牌 9.0.1.
我弄错了还是bug?
我知道该列的 "display: none",但我有很多数据,并且未呈现列保存我的本地性能
<xp:dataTable id="dataTable1" rows="30" var="item">
<xp:this.value><![CDATA[#{javascript:var collection = [];
for( var i = 0; i < 10; i++ ) {
var obj = {};
obj.name = "Name" + i;
obj.key = "Key" + i;
collection.push( obj );
}
return collection;}]]></xp:this.value>
<xp:column id="column1" rendered="false">
<xp:this.facets>
<xp:span xp:key="header">Name</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField1"
value="#{item.name}">
</xp:text>
</xp:column>
<xp:column id="column2">
<xp:this.facets>
<xp:span xp:key="header">Key</xp:span>
</xp:this.facets>
<xp:text escape="true" id="computedField2" value="#{item.key}"></xp:text>
</xp:column>
</xp:dataTable>
我可以确认我得到了完全相同的行为。我同意我希望整个专栏都不会呈现,但这显然不是它的行为。我一直将 xp:dataTable 控件视为稍微打扮的 xp:repeat,但没有那么多 window 打扮作为 xp:viewPanel 控件和 the Domino Designer wiki page on xp:dataTable 对任何细节和我的 Mastering XPages 第 2 版都没有帮助。也不会在 xp:dataTable.
上详细介绍还值得注意的是,在 xp:text 字段上设置 rendered 属性 仍然会构建第一个每行中的单元格,无论第一个
我的建议是切换到 xp:repeat 控件,这样您就可以更好地控制整个过程。调整你的代码,它会有点像这样:
<xp:table>
<xp:tr>
<xp:td>Name</xp:td>
<xp:td>Key</xp:td>
</xp:tr>
<xp:repeat
id="repeat1"
rows="30"
var="item">
<xp:this.value><![CDATA[#{javascript:var collection = [];
for( var i = 0; i < 10; i++ ) {
var obj = {};
obj.name = "Name" + i;
obj.key = "Key" + i;
collection.push( obj );
}
return collection;}]]></xp:this.value>
<xp:tr>
<xp:td
rendered="false">
<xp:text
escape="true"
id="computedField1"
value="#{item.name}">
</xp:text>
</xp:td>
<xp:td>
<xp:text
escape="true"
id="computedField2"
value="#{item.key}">
</xp:text>
</xp:td>
</xp:tr>
</xp:repeat>
</xp:table>
请注意,要同时设置用作 header 标签的单元格的渲染 属性(代替