关于moss:SharePoint列表中的”自动编号”列

Auto number column in SharePoint list

在SharePoint列表中,我希望添加到列表中的自动编号列递增。我该怎么办?


Sharepoint列表会自动包含一个带有" ID"的列,该列会自动递增。您只需要从"修改视图"屏幕中选择此列即可查看。


您不能将新的唯一的自动生成的ID添加到SharePoint列表中,但是已经有一个!如果您编辑"所有项目"视图,将看到未选中显示选项的列列表。

这些列中有相当多的列存在但从未显示,例如" Created By"和" Created"。这些字段在SharePoint中使用,但是默认情况下不会显示它们,以免使显示混乱。您无法编辑这些字段,但是可以将其显示给用户。如果选中ID字段旁边的"显示"框,则会在列表中显示一个唯一且自动生成的ID字段。

签出:SharePoint列表中的唯一ID


如果要控制唯一标识符的格式,可以在SharePoint中创建自己的<FieldType>。 MSDN还具有直观的操作方法。这基本上意味着您正在创建自定义列。

WSS定义"计数器"字段类型(上面的ID列正在使用的字段)。我从来没有必要重复使用或扩展它,但应该可以。

可能存在不创建自定义<FieldType>的解决方案。例如:如果您想要唯一的ID,例如CUST1,CUST2 ...,则可能可以创建一个Calculated列,并在公式(="CUST" & [ID])中使用ID列的值。我没有尝试过,但这应该可以工作:)


我在使用自定义列表时遇到了这个问题,虽然无法使用自动生成的ID列来创建计算列,但可以使用工作流来完成繁重的工作。

我创建了一个新的类型为Number的工作流程变量,并将其设置为当前项目中ID列的值。然后,只需计算自定义列值并进行设置即可-在我的情况下,我只需要从100,000开始编号。

enter

无论哪种方式,如果您确实需要,所有项目都具有一个GUID的UniqueID属性:http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.splistitem.uniqueid.aspx


如上所述,sharepoint中的所有对象都包含某种唯一标识符(通常用于列表项的基于整数的计数器,以及用于列表的GUID)。

也就是说,http://www.codeplex.com/features上还有一个称为"唯一列策略"的功能,该功能旨在添加具有唯一值的另一列。有关完整的文章,请访问http://scothillier.spaces.live.com/blog/cns!8F5DEA8AEA9E6FBB!293.entry


如果您希望所有列表中的ID列之外的内容,您可能不得不求助于列表上的事件接收器,以"计算"您所标识的唯一值或使用自定义嵌入了所需逻辑的字段类型。不幸的是,这两个选项都需要编写和部署自定义代码到服务器,以及将程序集部署到GAC,这在您无法完全控制服务器的环境中可能会被忽略。

如果您不需要立即显示唯一标识符,则可以通过工作流(使用SharePoint Designer或Visual Studio中内置的自定义WF工作流)生成它。

不幸的是,似乎很显然的解决方案,计算所得的列无法用于此目的,因为尝试进行计算时尚未分配ID。如果您查看事实并编辑项目,则计算可能会达到所需的效果,但是在最初创建新项目时,将无法正确计算出该结果。


默认情况下位于其中。这是id字段。


Peetha是最好的主意,我已经在SP网站中使用自定义列表进行了同样的操作。使用工作流自动递增是最好的方法,并不是那么困难。检查此网站:http://splittingshares.wordpress.com/2008/04/11/auto-increment-a-number-in-a-new-list-item/

我非常感谢发布该解决方案的人,这太酷了!!


推荐阅读