我有以下情况:列表A有两列(名称,金额)和列表B(名称)我想添加一个计算列,它应该是列表A中与列表B中的名称相同的所有条目的总和例如:
清单A:
NAME Amount
L0011 100
L0011 50
L0020 234
Run Code Online (Sandbox Code Playgroud)
因此,在List BI中,希望计算列显示:
NAME Amount
L0011 150
L0020 234
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?工作流程(只要我在列表A中添加/修改条目,更新列表B)或其他内容?谢谢
小智 7
lem.mallari的答案是一个巨大的痛苦,除非你可以假设列表A中的金额永远不会改变,因为它没有跟踪一个项目是否已被添加到总和中.工作流无法遍历SharePoint列表,这意味着没有简单的方法来计算多个列表项的总和或平均值.
实现这一目标的正确方法将需要一些开发.在SharePoint开发人员培训(2010,2013)实际上将让你大部分的方式出现:当项目被添加或在名单A和B中使用SharePoint的API由名称要经过列表A和平均值变化的事件接收器应触发,然后更新列表B中的所有(或仅受影响的)项目.或者,您可以使用JavaScript显示列表A中与列表B中的项目同名的所有条目的总和,只要所有数据都显示在您的列表中页.如果您使用XPath和InfoPath很方便,则可以将列表A作为辅助数据源添加到列表B的表单中,并仅选择列表A中的适用项目来进行求和.
但如果我们谈论工作流程,这里是"仅工作流程"方法.这在2010年经过测试并取得了成功.使用以下列创建自定义列表C:
将列表A和B中的名称列替换为指向列表C的查找列.删除列表B中的"数量"列,而不是将"总和"列作为附加列.将以下列添加到列表A,并确保用户无法直接更改它们.这可以通过制作InfoPath表单或通过制作替代视图和编辑表单来加以限制.
每次在列表A中创建或修改项目时,都要创建一个工作流程.使用这些命令(我使用列表来提高可读性;在格式化为代码时它变得很丑陋):
使用计算列无法完成此操作,因为计算列只能用于同一列表中的列.
使用SharePoint Designer工作流您只需使用Create List Item和Update List Item操作,以便每当用户为L0011添加值时,该金额将添加到包含先前金额的另一个列表的列中.
如果您需要更详细的SharePoint方法答案,请告诉我,我将为您提供有关如何操作的分步说明.
| 归档时间: |
|
| 查看次数: |
57782 次 |
| 最近记录: |