【问题标题】:How can I use SharePoint Web Services to determine if a user has a document checked out?如何使用 SharePoint Web Services 确定用户是否已签出文档?
【发布时间】:2011-11-07 08:55:55
【问题描述】:

(请注意,我需要一个适用于 2007 年和 2010 年的解决方案)

我们有一个桌面应用程序,我们正在添加 Sharepoint 签入和签出功能以使用 Web 服务。

我们遇到的一个问题是确定(桌面应用程序的)当前用户是否已签出文档。

我们当前的方法是通过 Lists GetListItems 调用获取有关文档的信息,如果文档被签出,该调用将返回 ows_CheckoutUser 字段。

然后我们想将结帐用户的姓名与我们的用户姓名进行比较。

问题是 ows_CheckoutUser 中的名称似乎是用户的显示名称,而不是帐户名称,因此对于此检查来说不是唯一且不可靠的。

我注意到 ows_CheckoutUser 还为用户返回了一个 ID 值,但我似乎不知道如何获取当前用户的 ID,因此我可以对其进行比较。

有人对此有任何想法吗?这是正确的方法还是有更好的方法?

我曾考虑尝试通过 GetListItems 运行与文档名称匹配的查询,并且结帐用户等于我当前的用户,以查看我是否得到任何结果,但我认为这会遇到同样的问题。

或者我可能需要离开 Web 服务并使用 author.dll?

编辑

我已经开始通过 Author.dll FP 扩展使用 RPC 调用 getDocsMetaInfo。

此调用实际上为您提供了已签出文档的用户的帐户名称。

不过,我仍然对使用 Web 服务的解决方案感兴趣

【问题讨论】:

  • 如果解决方案包含第三方插件,您会感兴趣吗?
  • 服务器插件?如果是这样,我们无法控制客户将使用的 SharePoint 网站。因此,恐怕服务器插件不会有太大用处。

标签: web-services sharepoint


【解决方案1】:

不确定 sharepoint 的本机回复是什么,但我想它应该与使用用于 SharePoint 的 Camelot .NET 连接器时相同。

您有几个字段可能可以保存此信息

  • CheckedOutUserId,已签出项目的用户 ID(查找)
  • IsCheckedoutToLocal,(查找)
  • CheckoutUser,已签出至(用户)
  • CheckedOutTitle,已签出至(用户) -
  • LinkCheckedOutTitle,签出到(计算)

实际上是 LinkCheckedOutTitle 包含对签出文档的用户的视觉参考。在我的情况下,它被列为 trikksdomain\trikks,或者如果本地管理员检查了其机器\管理员的文档。

这是一份 SharePoint 2010 文档库列参考指南。 http://www.bendsoft.com/download.php?id=b05c062a401cf8bc221ea5df63cc9570

【讨论】:

  • 感谢您的回答。我似乎在 SP 网络服务回复中看不到它们。不知道为什么。我检查了 2007 年和 2010 年。我看到的唯一类似的是 ows_LinkFilename
  • 嗯,不知道连接器自己构造了什么。但它确实使用相同的 API 来读取该数据,因此您应该能够以某种方式获取它。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 2023-04-05
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多