我希望从定期会议工作区中的特定列表中获取所有项目。我试图执行以下CAML:
<Query>
<Where>
<IsNotNull>
<FieldRef Name='ID' />
</IsNotNull>
</Where>
</Query>
但它只显示即将举行的会议的数据。
但是当我打开列表时,从操作菜单中我可以选择显示所有会议的数据。这让我觉得有可能。我知道我可以将列表转换为系列项目,以便它们出现在所有会议中,但这不是我想要的。
答案 0 :(得分:5)
Yeehaaw!
最后我找到了解决方案! SPQuery 类有一个属性 MeetingInstanceId ,您可以为其分配一个特定InstanceID的值(例如2009年6月15日的20090615项)或查询所有您必须为其分配的项目 SPMeeting.SpecialInstance 枚举值(不要忘记将其强制转换为int)。
然后,您只需执行查询即可从您想要的任何工作空间中获取项目。
哦,别忘了
using Microsoft.SharePoint.Meetings;
或者你可以省略使用SPMeeting.SPecialInstance,但直接使用integeres从-3到0
示例代码:
using(SPSite site = new SPSite(<enter your workspace url>))
using (SPWeb web = site.OpenWeb())
{
SPQuery query = new SPQuery();
query.MeetingInstanceId = (int)SPMeeting.SpecialInstance.AllButSeries;
query.Query = @"<Query>
<Where>
<IsNotNull>
<FieldRef Name='ID' />
</IsNotNull>
</Where>
</Query>";
SPList list = web.Lists[<enter your list>];
foreach (SPListItem item in list.GetItems(query))
{
Console.WriteLine(item[item.Fields.GetFieldByInternalName("Title").Id]);
}
}
这需要花费很多时间才能找到。网络上可能没有太多关于此问题的信息,或者我没有选择正确的关键字,但无论如何归功于this来源首先获得关键字“获取所有列表项目的sharepoint工作区重复出现”。< / p>
我希望这有助于其他人。
答案 1 :(得分:0)
我认为列表的默认视图仅显示即将举行的会议列表项,而不会显示过去的会议列表项。
如果未指定运行CAML查询的视图,它将从默认视图中检索所有项目。使用“所有项目”视图(“所有事件”视图,如果它是日历)而不是默认视图,还将SPQuery.ExpandRecurrence属性设置为true。