我的XPage上有一个组合框,showReadonlyAsDisabled标记为true:
std::less::operator()
但是,组合框仍显示为只读(文本)而不是禁用的控件。这是一个错误吗? showReadonlyAsDisabled属性似乎适用于其他控件(输入,无线电等)。我正在使用Designer 9.0.1FP4,而Domino服务器则在9.0.1FP5上。
编辑(显示带数据绑定的组合框):
自定义控件中的Comobo框
<xp:comboBox
id="ComboTest"
defaultValue="One"
showReadonlyAsDisabled="true"
readonly="true">
<xp:selectItem
itemLabel="One"
itemValue="One">
</xp:selectItem>
</xp:comboBox>
父XPage上的数据绑定
<xp:comboBox
id="Address"
value="#{Location.AddressType}"
defaultValue="Street Address"
showReadonlyAsDisabled="true"
readonly="true">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:keywords.getSelectItem("Address Type", true);}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox>
答案 0 :(得分:1)
对于在阅读模式下呈现为html表格的各种选择控件似乎是一个问题(在我看来,这比仅仅这个更令人讨厌&#34;在阅读模式下显示禁用&#34;错误因为它使样式不必要地变得复杂)。但是,只有在控件绑定到文档数据源时才会发生这种情况。
所以你可以尝试在你的页面上创建第二个组合框并将其绑定到viewScope变量,然后确保在页面加载时从Notes字段复制正确的值,然后确保只有一个tyru事件控制在读取/编辑模式下可见:
对于名为Location
的数据源和Notes字段AddressType
,这将位于beforePageLoad
中:
if(!doc1.isNewNote()){
viewScope.comboField=Location.getItemValueString("AddressType");
}
这将是原始/可编辑的comboBox控件的标记:
<xp:comboBox id="comboBox1" value="#{Location.AddressType}" rendered="#{javascript:doc1.isEditable()}" defaultValue="Street Address">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:keywords.getSelectItem("Address Type", true);}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox>
这将是您的附加/禁用comboBox控件的标记:
<xp:comboBox id="comboBox2" value="#{viewScope.AddressType}" disabled="true" rendered="#{javascript:!doc1.isEditable()}">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:keywords.getSelectItem("Address Type", true);}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox>
答案 1 :(得分:0)
您可以将以下XML部分添加到应用程序的faces-config.xml
。
使用此功能,ComboBox的渲染器将设置为默认渲染器,而不是只读渲染器。然后,您的ComboBox应该按您的要求显示。
<renderer>
<component-family>javax.faces.SelectOne</component-family>
<renderer-type>javax.faces.Menu.ReadOnly</renderer-type>
<renderer-class>com.ibm.xsp.renderkit.html_basic.MenuRenderer</renderer-class>
</renderer>