0

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

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

我知道我可以创建不嵌套的单独面板,但是这种嵌套面板的设计模式很常见,我相信那里有 n 个 XPages 大师已经解决了这个问题......

4

1 回答 1

0

我不是您正在寻找的 XPage 大师,但我有一个解决方法,=)

据我所知,如果您将外部面板设置为 readonly="true" 您所有的内部 inputText 框将<inputField>在您的 html 中输出 no 只是一个<span>. 如果您想要一个看起来像输入但只是禁用输入的字段,那也很烦人。如果您将 todisabled="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>

此解决方案的另一个好处是,您可以在客户端将它们设置为可编辑,而无需任何服务器调用。希望能帮助到你。

于 2013-08-13T06:27:44.360 回答