在 SharePoint 列表中,我想要一个自动编号列,当我添加到列表中时该列会递增。我该怎么做才能做到最好?
9 回答
Sharepoint 列表自动有一个带有“ID”的列,该列会自动递增。您只需从“修改视图”屏幕中选择此列即可查看它。
您无法将新的唯一自动生成 ID 添加到 SharePoint 列表,但那里已经有一个!如果您编辑“所有项目”视图,您将看到未选中显示选项的列列表。
这些列中有很多存在但从未显示,例如“创建者”和“创建者”。这些字段在 SharePoint 中使用,但默认情况下不显示,以免显示混乱。您无法编辑这些字段,但可以将它们显示给用户。如果您选中 ID 字段旁边的“显示”框,您将在列表中显示一个唯一且自动生成的 ID 字段。
如果您想控制唯一标识符的格式,您可以在 SharePoint中创建自己<FieldType>
的。MSDN 也有一个可视化的 How-To。这基本上意味着您正在创建一个自定义列。
WSS 定义了 Counter 字段类型(这是上面的 ID 列使用的)。我从来没有需要重新使用它或扩展它,但它应该是可能的。
无需创建自定义<FieldType>
. 例如:如果您想要像 CUST1、CUST2、... 这样的唯一 ID,则可以创建一个计算列并在您的公式 ( ="CUST" & [ID]
) 中使用 ID 列的值。我还没有尝试过,但这应该可以:)
我在自定义列表中遇到了这个问题,虽然无法使用自动生成的ID列来创建计算列,但可以使用工作流来完成繁重的工作。
我创建了一个Number类型的新工作流变量,并将其设置为当前项目中ID列的值。然后只需计算自定义列值并设置它 - 在我的情况下,我只需要从 100,000 开始编号。
默认情况下它在那里。这是 id 字段。
如果您想要超出所有列表中的 ID 列的内容,您可能不得不求助于列表中的事件接收器来“计算”您唯一标识的值应该是什么,或者使用自定义字段类型将所需的逻辑嵌入其中。不幸的是,这两个选项都需要编写自定义代码并将其部署到服务器,并将程序集部署到 GAC,这在您无法完全控制服务器的环境中可能会令人不悦。
如果您不需要立即显示唯一标识符,您可以通过工作流(使用 SharePoint Designer 或 Visual Studio 中内置的自定义 WF 工作流)生成它。
不幸的是,计算列似乎是一个显而易见的解决方案,但不适用于此目的,因为在尝试计算时尚未分配 ID。如果您事后进入并编辑项目,计算可能会达到您想要的结果,但在初始创建新项目时,它不会被正确计算。
如前所述,sharepoint 中的所有对象都包含某种唯一标识符(通常是基于整数的列表项计数器和列表的 GUID)。
也就是说, http://www.codeplex.com/features上还有一个名为“唯一列策略”的功能,旨在添加具有唯一值的其他列。完整的文章可在http://scothillier.spaces.live.com/blog/cns!8F5DEA8AEA9E6FBB!293.entry获得
所以我不确定我是否真的能想到为什么您实际上需要一个“网站集唯一”ID,所以也许您可以发表评论并让我们知道这里实际要完成的工作......
无论哪种方式,如果您真的需要它,所有项目都有一个作为 GUID 的 UniqueID 属性:http: //msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.uniqueid.aspx
Peetha 有最好的主意,我在我们的 SP 站点中对自定义列表做了同样的事情。使用工作流自动递增是最好的方法,而且并不难。看看这个网站:http ://splittingshares.wordpress.com/2008/04/11/auto-increment-a-number-in-a-new-list-item/
我非常感谢发布该解决方案的人,这非常酷!