Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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 在视图导出中获取摘要计数?_Xpages - Fatal编程技术网

Xpages 在视图导出中获取摘要计数?

Xpages 在视图导出中获取摘要计数?,xpages,Xpages,我需要将视图导出到excel。我已经在某处找到了一些代码,它在xpages中运行得非常好。现在,用户希望添加总计的摘要。我会解释的 我有一个包含用户名、项目ID和设备ID的文档。我需要做的是导出具有特定项目ID的所有文档,在导出中显示用户名和设备ID,但在导出视图后,显示类似设备ID的汇总 大概是这样的: User Selected Equipment Jonh Smith C1 Salley Johnson

我需要将视图导出到excel。我已经在某处找到了一些代码,它在xpages中运行得非常好。现在,用户希望添加总计的摘要。我会解释的

我有一个包含用户名、项目ID和设备ID的文档。我需要做的是导出具有特定项目ID的所有文档,在导出中显示用户名和设备ID,但在导出视图后,显示类似设备ID的汇总

大概是这样的:

       User              Selected Equipment
       Jonh Smith        C1
       Salley Johnson    C2
       Fred Days         C1


       Summary
       C1   2
       C2   1 
我想做的是先在项目ID上使用分类视图,然后在设备ID上使用sum列,从NotesViewEntryCollection中执行getAllDocumentsByKey以获取所选项目的所有文档,然后利用分类行获取所需的总计。但是当我只为getAllDocumentsByKey获取一个文档时。如果我删除设备列并仅根据项目ID进行分类,那么我将获得所有预期的文档

我的另一个想法是拥有一个可以存储在sessionscope variable中的对象,然后使用getalldocumentsbykey再次对项目id进行排序。对象将具有设备ID变量和总计。当我在视图中工作时,我会更新当前设备id的总数。然后在视图导出结束时,导出此sessionscope表。但由于我是javascript新手,我真的不知道从哪里开始。这是正确的方向吗?如果是这样,有人能帮我开始吗

还有其他想法吗


另外,用户不必使用Excel的小计功能。

您在最后一段中的思路是正确的,但不需要将值存储在会话范围中。一个标准的javascript对象就可以了。假设您通过循环查看视图中的文档来生成报告,我认为最快、最简单的解决方案是在循环查看文档时对每个设备id进行计数,并将计数存储在对象中:

装备 装备[装备2] . . equipId[equipId]

然后,在循环浏览所有文档之后,循环浏览设备ID对象值,就像上面的示例报告中一样

通过javascript对象循环:

对javascript对象进行排序:

在最后一段中,您的思路是正确的,但不需要将值存储在会话范围中。一个标准的javascript对象就可以了。假设您通过循环查看视图中的文档来生成报告,我认为最快、最简单的解决方案是在循环查看文档时对每个设备id进行计数,并将计数存储在对象中:

装备 装备[装备2] . . equipId[equipId]

然后,在循环浏览所有文档之后,循环浏览设备ID对象值,就像上面的示例报告中一样

通过javascript对象循环:

对javascript对象进行排序:
布鲁斯,让你的生活更轻松,使用ViewNavigator。ViewNavigator具有类别条目,当您设置要求和的值时,该值将显示在ViewNavigator中。它还提供了从一个类别跳到另一个类别的方法,因此您可以读取的数据更少。例如,我使用此函数从分类视图(一个或两个级别)获取摘要数据:

函数getCategoryData(视图名、数据列、getChildren){ var v=database.getView(viewName); var nav=v.createViewNav(); var ve=nav.getFirst(); var isFirst=true; var result=“[”; while(ve){ 如果(!ve.isTotal()){ var curData=ve.getColumnValues(); 如果(!isFirst){ 结果+=“,”; } 结果+=“{label:\”; 结果+=curData[0]; 结果+=“\”,值:; 结果+=curData[dataColumn]; /*对于2个级别的类别,我们获取额外的数据*/ if(getChildren){ var childve=nav.getChild(); var firstChild=true; 结果+=”,子项:[”; while(childve){ var childData=childve.getColumnValues(); 如果(!第一个孩子){ 结果+=“,”; } 结果+=“{label:\”; 结果+=儿童数据[1]; 结果+=“\”,值:; 结果+=childData[dataColumn]; 结果+=“}”; 第一个孩子=假; childve=nav.getNextSibling(childve); } 结果+=“]” } 结果+=“}”; isFirst=false; } ve=导航getNextSibling(ve); } 结果+=“]”; 返回结果; } 注意:它返回一个JSON字符串,而不是JSON对象。我需要字符串,所以你可能想修改它。您可以轻松地修改函数,首先选择基于类别的子集:

函数getCumulativeCategoryData(视图名、键、数据列、fetchChildren){ var v=database.getView(viewName); var nav=v.createViewNavFromCategory(键); var ve=nav.getFirst(); ... }
其中键是字符串或向量。您需要对数据类型稍微小心一点。如果视图中的类别是数字,请确保使用
number()
作为密钥,否则它将不匹配。

Bruce,让您的生活更轻松,并使用ViewNavigator。ViewNavigator具有类别条目,当您设置要求和的值时,该值将显示在ViewNavigator中。它还提供了从一个类别跳到另一个类别的方法,因此您可以读取的数据更少。例如,我使用此函数从分类视图(一个或两个级别)获取摘要数据:

函数getCategoryData(视图名、数据列、getChildren){ var v=database.getView(viewName); var nav=v.createViewNav(); var ve=nav.getFirst(); var isFirst=true; var result=“[”; while(ve){ 如果(!v