Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpages Repeat控件绑定到Repeat集合中返回字符串的数组数组_Xpages - Fatal编程技术网

Xpages Repeat控件绑定到Repeat集合中返回字符串的数组数组

Xpages Repeat控件绑定到Repeat集合中返回字符串的数组数组,xpages,Xpages,我试图通过获取NotesViewEntryCollection,然后在该集合中循环以构建一个数组来显示repeat控件中视图的子集,该数组中的每个值都包含一个与条目中的列值对应的数组 <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:repeat id="repeat1" rows="30" var="rowData" indexVar="rowIndex"> <xp:this.valu

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

<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>

但我在这一行遇到了一个错误:

错误是:

Java类“Java.lang.String”中的未知成员“0”


关于如何解决这个问题,您有什么想法吗?

在推送方法中,您不会传递数组索引

columnVals.push(entry.getColumnValues()[0]);
应该是

columnVals.push(entry.getColumnValues());

Howard

在推送方法中,不传递数组索引

columnVals.push(entry.getColumnValues()[0]);
应该是

columnVals.push(entry.getColumnValues());

霍华德

我觉得这不能——不应该要简化。基本思想是,您可以将Domino view数据源或整个
NotesViewEntryCollection
对象输入到
repeat
对象中。这样,您将得到表示单个
NotesViewEntry
对象的
rowData
。然后,您的
计算字段
值可以直接引用条目的
列值
向量中的任何元素。这样,您甚至不必费心回收任何对象:

<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>


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

我觉得这可以-不应该要简化。基本思想是,您可以将Domino view数据源或整个
NotesViewEntryCollection
对象输入到
repeat
对象中。这样,您将得到表示单个
NotesViewEntry
对象的
rowData
。然后,您的
计算字段
值可以直接引用条目的
列值
向量中的任何元素。这样,您甚至不必费心回收任何对象:

<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>


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

而且,在循环浏览Notes视图时,一定要循环使用!而且,一定要循环使用Notes视图!我完全同意洛萨的观点。dominoView with
keys
属性集的作用与您所做的差不多,但是使用ViewNavigator并限制在运行时从中收集数据的条目数,以获得更好的性能,另外还可以循环使用视图条目和视图条目值(可能包括日期/时间,在回收ViewEntry时不会自动回收)。仅在绝对需要时手动迭代ViewEntries。
getColumnValues()
必须提取所有列值,因此,即使您只需要一列,实际上也必须获取所有列值,因此不需要在那里保存。完全同意这种方法。非常感谢!我完全同意Lothar。带有
键的dominoView
属性集与您所做的差不多,但使用ViewNavigator和为了获得更好的性能,在运行时收集了大量的条目数据,并回收了视图条目和视图条目值(可能包括日期/时间,回收视图条目时不会自动回收)。仅在绝对需要时手动迭代视图条目。
getColumnValues()
必须提取所有列值,因此,即使您只需要一列,实际上也必须获取所有列值,因此不需要在那里保存。完全同意这种方法。非常感谢!