重复控制绑定到在repeat集合中返回字符串的数组数组

时间:2016-07-25 21:02:02

标签: xpages

我试图通过获取NotesViewEntryCollection来显示重复控件中视图的子集,然后循环遍历此集合以构建一个数组,其中数组中的每个值都包含与条目中的列值对应的数组。

<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:repeat id="repeat1" rows="30" var="rowData" indexVar="rowIndex">
        <xp:this.value><![CDATA[#{javascript:
            var view:NotesView = database.getView("CatalogEntries");
            var entryColl:NotesViewEntryCollection = view.getAllEntriesByKey(compositeData.catalog, true);
            if (entryColl.getCount() == 0) return ["empty"];
            var entries = [];
            var columnVals = [];
            var entry:NotesViewEntry = entryColl.getFirstEntry();
            do {
                columnVals = [];
                columnVals.push(entry.getColumnValues()[0]);
                columnVals.push(entry.getColumnValues()[1]);
                columnVals.push(entry.getColumnValues()[2]);
                columnVals.push(entry.getColumnValues()[3]);
                columnVals.push(entry.getColumnValues()[4]);
                columnVals.push(entry.getColumnValues()[5]);
                entries.push(columnVals);
                entry = entryColl.getNextEntry(entry);
            } while(!(entry == null))
            return entries;}]]></xp:this.value>
        <xp:text escape="true" id="computedField1" value="#{javascript:rowData[rowIndex][0]}"></xp:text>
    </xp:repeat>
</xp:view>

但我在这一行收到错误: <xp:text escape="true" id="computedField1" value="#{javascript:rowData[rowIndex][0]}"></xp:text>

错误是:

  

未知会员&#39; 0&#39;在Java类&#39; java.lang.String&#39;

关于如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:2)

我觉得这可以 - 不应该! - 简化。基本思想是,您可以将Domino视图数据源或整个NotesViewEntryCollection对象原样提供给repeat对象。这样,您最终得到代表单个rowData对象的NotesViewEntry。然后,您的computedField值可以直接引用条目columnValues向量中的任何元素。这样你甚至不需要费心回收任何物品:

<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.data>
        <xp:dominoView var="myView" viewName="CatalogEntries" keys=compositeData.catalog keysExactMatch="true">
        </xp:dominoView>
    </xp:this.data>
    <xp:repeat id="repeat1" rows="30" var="rowData" value="#{myView}">
        <xp:panel id="pnInner">
            <xp:text escape="true" id="computedField1">
                <xp:this.value><![CDATA[#{javascript:
                    if(rowData){
                        return rowData.getColumnValues()[0].toString();
                    }else{
                        return "empty";
                    }}]]>
                </xp:this.value>
            </xp:text>
        </xp:panel>
    </xp:repeat>
</xp:view>

过滤您的视图数据是在数据源级别完成的。

答案 1 :(得分:0)

在你的push方法中,你不传入数组索引。

action.php:  $var=$_POST['name'];  echo $var;

应该是

columnVals.push(entry.getColumnValues()[0]);

霍华德