如果我有一个readonly属性为true的外部面板,有没有办法创建内部可以编辑的内部面板?
用例是一个包含多个字段和多个RoundedRectLists的移动页面。我想为每个RoundedRectList添加一个搜索控件来过滤这些列表的内容。我不希望字段始终可编辑。我需要搜索控件可编辑,因此我可以输入搜索值而无需切换整个表单。目前我为内部面板设置了readonly = false,但只有外部面板的readonly也设置为false时,搜索控件才变得可编辑。
我知道我可以创建不嵌套的单独面板,但这种嵌套面板的设计模式非常普遍,我确信那里有n位XPage大师可以解决这个问题......
答案 0 :(得分:0)
我不是您正在寻找的XPage大师,但我有一个解决方法,=)
据我所知,如果将外部面板设置为readonly =“true”,则所有内部inputText框将在html中仅输出<inputField>
<span>
。如果你想让一个看起来像输入的字段但是只是禁用输入,这也很烦人。如果您将设置为disabled="true"
并且showReadonlyAsDisabled =“true”,则可以实现此目的。
我建议设置所有readonly =“false”并使用dojo.query在页面加载时设置禁用的属性,如:
<xp:scriptBlock>
<xp:this.value><![CDATA[dojo.ready(function(){
dojo.query(".input").forEach(function(node, index, array){
node.disabled = true;
}
)
});]]></xp:this.value>
</xp:scriptBlock>
<xp:panel>
<xp:inputText id="inputText1" value="#{viewScope.in1}" styleClass="input"
defaultValue="Txt0" >
</xp:inputText>
<xp:inputText id="inputText2" value="#{viewScope.in2}" styleClass="input"
defaultValue="Txt1">
</xp:inputText>
<xp:inputText id="inputText3" value="#{viewScope.in3}" styleClass="input"
defaultValue="Txt2">
</xp:inputText>
</xp:panel>
此解决方案的另一个好处是,您可以在clientSide上将其设置为可编辑,而无需任何服务器调用。 希望它有所帮助。