0

我想使用按钮动态更改重复控件的行。

重复代码:

<xp:repeat id="repeat1" rows="30" var="myrow">
            <xp:this.value><![CDATA[#{javascript:var myrows = new Array();
for (var i=0;i<viewScope.myrows;i++) {
myrows[i] = (i+1).toString()
};
myrows}]]></xp:this.value>
            <xc:ccrepeat FNameStatus="status_#{myrow}">
            </xc:ccrepeat>
        </xp:repeat>

一个按钮会增加 viewScope.myrows 的值,并且数组会增长(例如“1”、“2”、“3” - 我在计算字段中使用相同的数组代码检查它),但我的重复控件只显示1排!尝试使用部分/完全刷新并动态/在页面加载时计算。

当我最初将 viewScope.myrows 设置为更高的值(例如 5)时,重复显示 5 行。所以问题似乎是刷新。

一定是一个简单的错误,但我卡住了。提前感谢您的帮助

乌韦

4

1 回答 1

1

你的错误是当你计算<xp:this.value>你的重复控制时。您必须使用范围/会话/... 来存储您的数组,以便 repatcontrol 可以访问数组上的任何更改。这是一个示例代码,它应该如何工作:

   <xp:repeat id="repeat2" rows="30" var="myrow">
        <xp:this.value><![CDATA[#{javascript://
            var list = viewScope.rowList;
            return (list && typeof list == "string")? new Array(list):list;}]]>
        </xp:this.value>
        <xp:text escape="true" id="computedField4"
                value="#{javascript:myrow.toString();}">
        </xp:text><br></br>
    </xp:repeat>
    <xp:button value="addRow" id="button2">
        <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="repeat2">
        <xp:this.action><![CDATA[#{javascript:var list = viewScope.rowList;
    if(list){
        if(typeof list == "string"){
            list = new Array(list);
        }
    }else{
        list = new Array();
    }
    list.push("newRow");
    viewScope.rowList = list;}]]>
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>
于 2013-09-18T09:36:25.267 回答