Xpages嵌套的dojo选项卡容器重复dojo选项卡面板与checkboxgroup - 不更新

时间:2017-01-11 08:48:24

标签: dojo xpages repeat checkboxlist tabcontainer

您好我是Xpages的新手,并且在搜索后遇到了一个我无法找到相关问题/答案的问题(请参阅搜索字词的标题)。

我很高兴能够深入了解如何解决以下问题。

我有一个包含3个Dojo Tab容器的嵌套,每个容器包含一个带有Dojo Tab Control的重复容器,最内层的Tab Control带有一个标准的checkBoxGroup。

从多维sessionScope变量中读取选项卡的计算标签,最终维度包含checkBoxGroup的计算“标签|值”对。数据绑定到文档。

我可以在各个选项卡之间切换并选择/取消选中复选框,并在切换选项卡之间时保持跟踪状态。但是,这是关键,只有最终选项卡上的checkBoxGroup值在提交时写回底层文档,其他最里面的选项卡上显示的checkBoxGroup值将被忽略。

感谢收到有关如何解决此问题的任何建议指导。

    <xe:djTabContainer id="djTabContainer1"
                        style="height:600px;width:1200.0px"
                        doLayout="false">
                        <xe:this.rendered><![CDATA[#{javascript:control = getComponent("STP2radioGroup1");
control2 = getComponent("STP2radioGroup2");

if (control == null || control2 == null){return false;};

val = control.getValue();
val2 = control2.getValue();

if (val == "None" || val2 == "All") {
    false ;
}                           
else {
    true;
}}]]></xe:this.rendered>
                        <xp:repeat id="repeat1" rows="30"
                            value="${sessionScope.GHC}" var="GHCTabs" first="0"
                            indexVar="GHCTabIndex" repeatControls="true">
                            <xe:djTabPane id="djTabPane1"
                                title="#{javascript:GHCTabs}">
                                <xe:this.rendered><![CDATA[#{javascript:!empty(sessionScope.Services[GHCTabIndex])}]]></xe:this.rendered>
                                <xe:djTabContainer id="djTabContainer2"
                                    style="height:550px" doLayout="false">
                                    <xp:repeat id="repeat3" rows="30"
                                        value="${sessionScope.Enviro}" var="EnviroTabLables"
                                        indexVar="EnviroTabIndex" first="0" repeatControls="true">
                                        <xe:djTabPane id="djTabPane2"
                                            title="#{javascript:EnviroTabLables}">
                                            <xe:this.rendered><![CDATA[#{javascript:!empty(sessionScope.Services[GHCTabIndex][EnviroTabIndex])}]]></xe:this.rendered>
                                            <xe:djTabContainer
                                                id="djTabContainer3" style="height:500px"
                                                doLayout="false">
                                                <xp:repeat id="repeat2"
                                                    rows="30" value="${sessionScope.Aspect}" var="AspectTabs"
                                                    indexVar="AspectTabIndex" first="0"
                                                    repeatControls="true">
                                                    <xe:djTabPane
                                                        id="djTabPane3" title="#{javascript:AspectTabs}">
                                                        <xe:this.rendered><![CDATA[#{javascript:try{
if (sessionScope.Services[GHCTabIndex][EnviroTabIndex][AspectTabIndex] == null){false}
else
{true}
}
catch(e){
dBar.error("Error in 'Visible' property for Aspect Tab for checkBoxGroup - " + e.toString)}}]]></xe:this.rendered><xp:checkBoxGroup
                                                            id="checkBoxGroup1" styleClass="threeColumnCheckboxGroup"
                                                            value="#{Subscription.Services}" style="width:100.0%">
                                                            <xp:selectItems>
                                                                <xp:this.value><![CDATA[${javascript:try{
if (sessionScope.Services[GHCTabIndex][EnviroTabIndex][AspectTabIndex] == null){
dBar.error("sessionScop.Services["+GHCTabIndex+"]["+EnviroTabIndex+"]["+AspectTabIndex+"] = null")}
else
{sessionScope.Services[GHCTabIndex][EnviroTabIndex][AspectTabIndex]}
}
catch(e){
dBar.error("checkBoxGroup")}}]]></xp:this.value>
                                                            </xp:selectItems>
                                                        </xp:checkBoxGroup>






                                                </xe:djTabPane>
                                            </xp:repeat>
                                        </xe:djTabContainer>
                                    </xe:djTabPane>
                                </xp:repeat>
                            </xe:djTabContainer>
                        </xe:djTabPane>
                    </xp:repeat>
                </xe:djTabContainer>

1 个答案:

答案 0 :(得分:1)

重复的所有行都绑定到同一个sessionScope变量。这意味着他们将替换而不是追加范围变量。

对于在重复中绑定可编辑字段,您需要按照Tim的答案to this question执行某些操作。我建议在所有重复上设置repeatControls="true",以便在加载页面时创建和绑定行。对于动态绑定的组件,您可能会得到不可预测的结果,因为在初始加载之后,它是从组件到存储值的任何位置的单向映射。如果重复的顺序发生变化,则组件值不会发生变化,因此这些值将与您的预期不一致。