情况是:
我有子站点(SPWeb) htp://servername/subsitename/
我需要使用CrossListQueryInfo在所有列表中查找项目,但就在这个子站点(SPWeb)中,我需要:
var query = new CrossListQueryInfo
{
Lists = "<Lists ServerTemplate=\"100\" />",
ViewFields = "...",
Webs = "<Webs Scope=\"Recursive\" />",
WebUrl = web.ServerRelativeUrl,
UseCache = true,
Query = "..."
};
var cache = new CrossListQueryCache(query);
var dataTable = cache.GetSiteData(web.Site, CrossListQueryCache.ContextUrl()))但是这个搜索在整个的地点收集,什么是严格的方式使用它?我错过了什么?
发布于 2013-05-08 15:12:09
为了仅检索特定站点的项,请指定网属性空值。
根据MSDN:
Webs属性指定要包含在查询中的网站。默认情况下,查询只考虑从其中调用GetSiteData方法的网站。 您可以通过将Webs属性设置为包含Web标记和作用域属性的字符串来扩展查询的范围。范围属性的可能值包括递归和SiteCollection。 当范围属性设置为递归时,查询将考虑当前网站和当前网站的所有子站点。 当范围属性设置为SiteCollection时,查询将考虑与当前网站位于同一网站集合中的所有网站。在这两个属性值中,这是更具包容性的。
因此,更新后的代码:
var query = new CrossListQueryInfo
{
Lists = "<Lists ServerTemplate=\"100\" />",
ViewFields = "...",
Webs = string.Empty, // considers only the Web site from which the GetSiteData method was invoked
WebUrl = web.ServerRelativeUrl,
UseCache = true,
Query = "..."
};
var cache = new CrossListQueryCache(query);
var dataTable = cache.GetSiteData(web.Site, CrossListQueryCache.ContextUrl()))https://stackoverflow.com/questions/14160078
复制相似问题