0

我目前对多页会议工作区模板进行了一些测试,以检查它是否符合我们作为项目基础模板的需求。

您可能知道,多页会议工作区旨在能够管理单个工作区中的多个日期,并显示仅与特定日期相关的页面或应在每个日期出现的页面。

如果您使用 SharePoint Designer 检查多页会议工作区,您会看到有一个包含工作区所有页面的库。在每个日期显示的页面存储在根文件夹中,仅在单个日期显示的页面存储在以相应日期命名的文件夹中。

所以现在我们来解决我的问题。为了设置每个日期显示的单个页面的权限,我遍历页面库以找到我想要更改权限的页面。奇怪的是,库的 ListItemCollection 假装包含我期望它包含的页数。但是当我然后迭代集合时,它只返回附加到实际日期的页面。它既不返回应该在每个日期显示的页面,也不返回其他日期的页面。

我已经尝试通过使用 SPSecruity.RunWithElevatedPrivilges() 并模拟作为系统帐户来获取页面。我还尝试在不使用任何上下文信息的情况下通过命令行应用程序获取它们。似乎只能获取与特定日期相关的项目的行为也遵循对象模型。

那么,无论实际日期如何,我如何才能获得多页会议工作区的所有页面???

4

2 回答 2

1

您可以在工作区创建时刻和以编程方式设置权限时捕获事件。您可能想了解有关事件接收器或以编程方式设置权限的更多信息。

您提到的那些页面是添加到名为“会议系列”的列表中的项目 alt text http://img22.imageshack.us/img22/8963/ss20090528181724.png

它包含以下字段:

替代文字 http://img22.imageshack.us/img22/351/ss20090528181819.png 替代文字 http://img22.imageshack.us/img22/7857/ss20090528181852.png

来自 1 项的示例数据(未按列的顺序排列):

3   0x001C4383A41E441842A2A27CA249FED28F    Meeting Series  Recurrence  2009-05-28 18:11:20 2009-05-28 18:11:12 1073741823;#Sistēmas konts  1073741823;#Sistēmas konts  1   1   512 1.0 0   0   Recurrence  Recurrence  3   100.000000000000    {A6E54DB5-3A60-464B-A9A0-D314B49C41E8}  3;#test2/Recurrence/Lists/Meeting Series/1_2.000    3;#test2/Recurrence/Lists/Meeting Series    3;#2009-05-28 18:11:20  3;#2009-05-28 18:11:20  3;#0    0x7fffffffffffffff  3;#1_2.000  3;#{6BE299E5-E81F-40A8-80B2-41494DF0353C}   3;# 3;#{965D0DB3-1AE0-4C23-B006-FB4FC1FE1AB7}   1_2.000 3   1_2.000 1_2.000 /test2/Recurrence/Lists/Meeting Series/1_2.000  http://test:10000/test2/Recurrence/Lists/Meeting%20Series/1_2.000   1_2 3;# 1   1   2   {D8839339-6DDA-48A6-B3B7-FBCA58C8B436}  2009-06-03 19:00:00 2009-06-03 19:00:00 (null)  (null)  (null)  0   1   (null)  0   0   0   2009-05-28 18:10:57 (null)  http://test:10000/test2/Lists/Calendar, Kalendārs   2009-06-03 19:00:00
于 2009-05-28T15:24:40.420 回答
0

此类事件的页面仅在用户尝试访问它们时才会创建。这是设计使然,我发现的唯一解决方案是尝试通过网站(或某些仿真)访问页面,然后尝试通过代码访问它们。

关于 Flo 的评论,我在 Microsoft Sharepoint 2007 Development unleashed (sams, ISBN 0-672-32903-4) 上找到了它的来源。在第 101 页上说:

警告

从定期会议中获取数据可能很棘手。您可能会遇到代码尝试访问尚未在会议系列列表中配置的会议事件的列表项的情况。为确保已创建单个实例,您可以向实例的主页发出虚拟 Web 请求,例如: http://server/sites/mymeeting/default.aspx?InstanceID=20061012

如果您找到其他方法,请发布它会为我们节省很多精力!

于 2009-03-20T16:43:33.247 回答