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

Sharepoint 在会议工作区中,以编程方式从列表中获取所有议程项目,sharepoint,moss,wss,Sharepoint,Moss,Wss,我想从定期会议工作区的特定列表中获取所有项目。我尝试执行以下CAML: <Query> <Where> <IsNotNull> <FieldRef Name='ID' /> </IsNotNull> </Where> </Query> 但它只显示即将召开的会议的数据 但是,当我打开列表时,我可以从“操作”菜单中选择显示所有会议的数据。这使我认为这是可能的

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

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

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


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

我认为列表的默认视图仅显示即将召开的会议列表项目,而不显示过去的会议列表项目

如果未指定在其上运行CAML查询的视图,它将从默认视图中检索所有项目。使用“所有项目”视图(如果是日历,则使用“所有事件”视图)而不是默认视图,同时将SPQuery.ExpandRecurrence属性设置为true。

Yeehaaw

我终于找到了解决办法!SPQuery类有一个属性,您可以为该属性指定特定InstanceID的值(例如,2009年6月15日的项目为20090615),或者要查询所有项目,必须为其指定enum值(不要忘记将其强制转换为int)

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

哦,别忘了

using Microsoft.SharePoint.Meetings;
也可以使用SPMeeting.SPecialInstance进行操作,但直接使用从-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]);
    }
}
使用(SPSite site=new SPSite())
使用(SPWeb=site.OpenWeb())
{              
SPQuery query=新建SPQuery();
query.MeetingInstanceId=(int)SPMeeting.SpecialInstance.AllButSeries;
query.query=@”
";
SPList list=web.Lists[];
foreach(列表中的SPListItem项。GetItems(查询))
{
Console.WriteLine(item[item.Fields.GetFieldByInternalName(“Title”).Id]);
}
}
花了这么多时间才找到这个。可能网上没有太多关于这个问题的信息,或者我没有选择正确的关键字,但无论如何,要归功于source,因为它首先获得了关键字“获取sharepoint workspace中的所有列表项”


我希望这对其他人有帮助。

很遗憾,但是SPQuery.ExpandRecurrende属性没有帮助。以及AllItems视图不会显示所有定期会议中的项目,但仅显示此项目。共有3个视图可用:Attendeers(AllItems.aspx)、Manage Attendeers(ManageA.aspx)和default.aspx。但是,当从浏览器获取数据时,我看到它将一个字符串添加到url-InstanceID=ALL,并返回所有数据…对我来说,
GetListItems
方法的签名是
public System.Xml.Linq.XElement GetListItems(string listName、string viewName、System.Xml.Linq.XElement查询、System.Xml.Linq.XElement视图字段、string rowLimit、System.Xml.Linq.XElement查询选项、string webID)
它使用
XElement
,不
XmlElement
也不
XmlNOde
。我也有同样的错误。