在嵌套面板中设置只读属性

时间:2013-08-12 15:53:48

标签: xpages

如果我有一个readonly属性为true的外部面板,有没有办法创建内部可以编辑的内部面板?

用例是一个包含多个字段和多个RoundedRectLists的移动页面。我想为每个RoundedRectList添加一个搜索控件来过滤这些列表的内容。我不希望字段始终可编辑。我需要搜索控件可编辑,因此我可以输入搜索值而无需切换整个表单。目前我为内部面板设置了readonly = false,但只有外部面板的readonly也设置为false时,搜索控件才变得可编辑。

我知道我可以创建不嵌套的单独面板,但这种嵌套面板的设计模式非常普遍,我确信那里有n位XPage大师可以解决这个问题......

1 个答案:

答案 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上将其设置为可编辑,而无需任何服务器调用。 希望它有所帮助。