SharePoint计算字段重置项目编辑

时间:2015-11-19 15:29:28

标签: sharepoint sharepoint-2010

我正在使用从旧Windows 2003服务器迁移到现有2008服务器的SharePoint列表。此列表用于跟踪用户针对另一个应用程序引发的问题 - 如果您愿意,可以执行的作业列表。

在旧列表中有一个Id字段。在新区域中重新创建列表时,分配的ID号不同,例如

Old ID    New ID
--------- ---------
5         204
6         2
7         3
8         159
9         4

此作业似乎相当随机。

要取消此操作,会创建计算列,因此迁移前引发的ID使用旧ID号,迁移后引发的新调用使用计算值。计算是

=IF(ISBLANK([ID (Old)]),ID+8,IF([ID (Old)]<=348,[ID (Old)],ID+8))

这会将ID (Old)与空白进行比较,如果是,则为新呼叫,并且应具有默认ID号加8(我认为在开发过程中总共有8个调用已被删除)。

否则,如果旧ID号码小于348(我们迁移时的电话号码),请使用旧ID号码。

如果两个条件都不满足,只需将ID设置为新的ID号加上8。

创建新来电时效果很好。

编辑通话时出现问题。例如,如果我将ETA设置为新值并保存呼叫,则计算ID 始终重置为8.

我可以通过进入列表设置 - &gt;来解决这个问题。打开计算列 - &gt;然后单击“确定”这会重新应用计算,所有内容都会再次正确编号。

有关信息 - 由于部署环境,我根本无法使用SharePoint Designer。

问题是,在编辑项目时如何停止重新编号?

1 个答案:

答案 0 :(得分:2)

ID字段对计算列的行为有点奇怪。计算的列公式将查找项目的ID,并在创建项目或修改公式时正确解析,但正如您所发现的,当项目被修改时,公式无法找到ID值。 (我的猜测是,这与ID字段没有包含在更新时发送到数据库的列值列表中,可能是因为ID字段永远不会改变。)

解决此问题的一种方法是使用工作流程(或自定义事件处理程序,如果您手上有太多时间)将ID字段复制到另一列,例如数字或单行文本列,每当项目已创建。然后,您可以在公式中使用该新列,而不是使用ID列。

要阻止人们更新您的虚拟ID列,您可以将其从表单中隐藏。为此,首先启用列表内容类型的管理,然后编辑Item内容类型,找到新的虚拟ID列,并将其更改为&#34; Hidden&#34; (而不是&#34;必需&#34;或&#34;可选&#34;)。