我有一些用户特定的数据需要存储在SharePoint中,并且可以通过自定义的Web部件访问用户。让我们说一个喜欢的网址列表。存储此信息最直接的方法是什么?
对我来说听起来像RTFM,但我可能会向谷歌提出错误的问题。
[更新]
我们最终将此信息存储在一个简单的列表中,位于固定位置,并使用Person字段进行过滤。也许确实是最简单的解决方案,但从技术上讲,我认为下面标记的答案更好。
答案 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。