CAML查询从文档库和页面库中检索文件

时间:2016-04-25 18:18:08

标签: c# sharepoint sharepoint-2013 caml sharepoint-search

我试图在Pages和Document库中搜索一次。 CAML中是否有适用于文档库和页面库的模板。

我只针对页面库使用它,但它不搜索文档库

siteDataQuery.Lists ="<listsLists ServerTemplate=\"850\" />"; 

完整代码

 sing (SPWeb web = new SPSite(SPContext.Current.Site.RootWeb.Url).OpenWeb())
                {

                    siteDataQuery.ViewFields = "<FieldRef  Nullable=\"TRUE\" Name=\"FileRef\"/><FieldRef Name=\"Title\"/>";
                    siteDataQuery.Lists = "<Lists ServerTemplate=\"101\" />";
                    siteDataQuery.RowLimit = 500;
                    siteDataQuery.Webs = "<Webs Scope=\"Recursive\"/>";

                    siteDataQuery.Query = "<Where><And><Eq><FieldRef Name='ContentType' /><Value Type='Computed'Page-Archive Item</Value></Eq><Eq><FieldRef Name='Metadata' LookupId='True' /><Value Type='Integer'>447</Value></Eq></And></Where>"

                    System.Data.DataTable dataTable =  web.GetSiteData(siteDataQuery);
                }

我需要搜索每个子网站及其各自的文档和页面库。

任何想法??

1 个答案:

答案 0 :(得分:1)

请将此用于文档库: -

siteDataQuery.Lists ="< listsLists ServerTemplate=\"101\" />";

的SharePoint Server模板ID
  

页面库=&gt; 850

  

文档库=&gt; 101

尝试使用此siteDataQuery.Lists,如下所示

siteDataQuery.Lists = "<Lists MaxListLimit=\"2\">" +
              "<List ID="+web.Lists.TryGetList("firstlistname").ID+" />" +
              "<List ID="+web.Lists.TryGetList("secondlistname").ID+" />" +             
           "</Lists>";

希望这会有所帮助