我正在使用从旧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。
问题是,在编辑项目时如何停止重新编号?
答案 0 :(得分:2)
ID字段对计算列的行为有点奇怪。计算的列公式将查找项目的ID,并在创建项目或修改公式时正确解析,但正如您所发现的,当项目被修改时,公式无法找到ID值。 (我的猜测是,这与ID字段没有包含在更新时发送到数据库的列值列表中,可能是因为ID字段永远不会改变。)
解决此问题的一种方法是使用工作流程(或自定义事件处理程序,如果您手上有太多时间)将ID字段复制到另一列,例如数字或单行文本列,每当项目已创建。然后,您可以在公式中使用该新列,而不是使用ID列。
要阻止人们更新您的虚拟ID列,您可以将其从表单中隐藏。为此,首先启用列表内容类型的管理,然后编辑Item内容类型,找到新的虚拟ID列,并将其更改为&#34; Hidden&#34; (而不是&#34;必需&#34;或&#34;可选&#34;)。