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

Jan*_*rgs 3 sharepoint moss wss

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

<Query>
   <Where>
      <IsNotNull>
         <FieldRef Name='ID' />
      </IsNotNull>
   </Where>
</Query>
Run Code Online (Sandbox Code Playgroud)

但它只显示即将召开的会议的数据.

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

Jan*_*rgs 5

Yeehaaw!

最后我找到了解决方案!SPQuery类有一个属性MeetingInstanceId,您可以为其指定一个特定InstanceID的值(例如2009-0615为2009年6月15日的项目)或查询所有必须为其分配的项目SPMeeting.SpecialInstance枚举值(不要忘记将其强制转换)到int).

然后,您只需执行查询即可从您想要的任何工作空间中获取项目.

哦,别忘了

using Microsoft.SharePoint.Meetings;
Run Code Online (Sandbox Code Playgroud)

或者您可以省略使用SPMeeting.SPecialInstance,但直接使用-3到0的integeres

示例代码:

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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

花了这么多时间才找到它.网络上可能没有太多关于这个问题的信息,或者我没有选择正确的关键字,但无论如何都要归功于这个来源首先获得关键字"让所有列表项共享点工作区重复出现".

我希望这有助于其他人.