在会议工作区中,以编程方式从列表中获取所有议程项目

时间:2009-06-08 08:15:46

标签: sharepoint moss wss

我希望从定期会议工作区中的特定列表中获取所有项目。我试图执行以下CAML:

<Query>
   <Where>
      <IsNotNull>
         <FieldRef Name='ID' />
      </IsNotNull>
   </Where>
</Query>

但它只显示即将举行的会议的数据。

但是当我打开列表时,从操作菜单中我可以选择显示所有会议的数据。这让我觉得有可能。我知道我可以将列表转换为系列项目,以便它们出现在所有会议中,但这不是我想要的。

2 个答案:

答案 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。