如何在SharePoint中存储特定于用户的数据

时间:2010-05-03 07:32:25

标签: sharepoint wss sharepoint-2010

我有一些用户特定的数据需要存储在SharePoint中,并且可以通过自定义的Web部件访问用户。让我们说一个喜欢的网址列表。存储此信息最直接的方法是什么?

  • SPUser或类似的一些内置属性包,我不知道。
  • SPList,通过用户列关联。
  • 自定义数据库表,通过SPUser ID关联。
  • 否则?

对我来说听起来像RTFM,但我可能会向谷歌提出错误的问题。

[更新]

我们最终将此信息存储在一个简单的列表中,位于固定位置,并使用Person字段进行过滤。也许确实是最简单的解决方案,但从技术上讲,我认为下面标记的答案更好。

4 个答案:

答案 0 :(得分:5)

如果要在每个用户的网站集中重复使用它们,可以将“字段”添加到“用户信息列表”。您可以向可以创建此列的Web部件解决方案添加功能接收器,或者检查用户信息列表中是否存在此列以确保列存在。

“用户信息”列表是SharePoint用于存储用户信息的标准SharePoint列表。 要访问用户信息列表,您可以转到网站集的根网站并使用SiteUserInfoList属性

E.G。

SPList userInformationlist = SPContext.Current.Site.RootWeb.SiteUserInfoList;
//Or 
SPWeb web = SPContext.Current.Site.RootWeb;
SPList userInformationlist = web.SiteUserInfoList;

要访问用户列表项,您可以使用用户ID从用户信息列表中取回ListItem

E.G。

SPListItem currentUserItem = userInformationlist.GetItemById(web.CurrentUser.ID);

如果您使用的是MOSS,则可以将此信息存储在用户配置文件中,并使其可以跨站点集合使用,这不需要启用“我的网站”。您需要使用用户配置文件类来访问它。

答案 1 :(得分:2)

我会选择用户个人资料上的属性。您不希望将信息存储在根网站上,因为它不是有关根网站的信息。 您最喜欢的网址示例,每个用户的个人资料都有一个“快速链接”集合。为每个用户存储网址的理想场所。 :)

答案 2 :(得分:2)

构建一个读取/写入自定义数据库的webpart,您可以灵活地跨SiteCollections,WebApps甚至是单独的Farms使用webpart。

这是在我工作的地方实施的,并取得了巨大的成功。我们需要一种方法来为我们的最终用户提供大量重要的常用链接。最终用户能够显示对其特定工作职能有用的链接,并且可以将webpart放在任何位置以引用对他们来说很重要的链接。您还可以使用“admin”转到自定义数据库并更新可能更改的任何URL,而不会影响最终用户或最终导致链接断开。

答案 3 :(得分:1)

这是一个非常好的问题。

虽然我没有完美的答案,但您可以考虑以下事项:

  • 如果可行,请将数据存储在浏览器Cookie中。

  • 存储在属性中的网站集的rootweb中,以用户的登录ID为键。您可能希望在读取/写入属性时提升,以防用户有权访问子网站,但不能访问rootweb。