SharePoint计算字段在项目编辑时重置

SharePoint计算字段在项目编辑时重置,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我使用的SharePoint列表已从旧的Windows 2003服务器迁移到现有的2008服务器。此列表用于跟踪用户针对另一个应用程序提出的问题—如果愿意,可以执行的作业列表 在旧列表中有一个Id字段。例如,在新区域中重新创建列表时,分配的ID号不同 Old ID New ID --------- --------- 5 204 6 2 7 3 8 159 9 4 这项任务似乎是相当随机的 要对此进行否定,将

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

在旧列表中有一个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))
=IF(ISBLANK([ID(Old)])、ID+8、IF([ID(Old)]打开计算列->并单击确定。这将重新应用计算,所有内容都将重新正确编号

仅供参考-由于部署环境的原因,我根本无法使用SharePoint Designer


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

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

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

要防止人们更新您的虚拟ID列,您可以将其隐藏在表单中。为此,请首先启用列表内容类型的管理,然后编辑项目内容类型,找到新的虚拟ID列,并将其更改为“隐藏”(而不是“必需”或“可选”)