搜索页面的CAML返回站点中的所有文件和文件夹

时间:2016-08-23 04:30:19

标签: sharepoint web-parts caml

我正在尝试为Sharepoint 2013编写一个简单的Web部件,用于搜索特定内容类型的所有页面并输出其标题列表。我正在使用CAML查询来搜索它。但无论查询什么,我的结果只是此Sharepoint站点中所有文件和文件夹的列表。

最后,我将CAML查询简化为一个简单的"查找以字母T"开头的所有内容,但结果仍然是输出网站根级别的所有文件和文件夹。

我做错了什么?

    protected override void CreateChildControls()
    {
        Label label1 = new Label();

        try
        {
            SPQuery query = new SPQuery();
            query.Query = @"<Query>
                            <Where>
                              <BeginsWith>
                                <FieldRef Name='Title'></FieldRef>
                                <Value Type='Text'>T</Value>
                              </BeginsWith>
                            </Where>
                            </Query>";

            using (SPSite site = new SPSite("https://xxxxxx/sites/xxxxx/en/xxxx/"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    PublishingWeb pubweb = PublishingWeb.GetPublishingWeb(web);
                    PublishingPageCollection collection = pubweb.GetPublishingPages(query);

                    //now output the results of the query                        
                    label1.Text = "Items: " + collection.Count.ToString();
                    for (int i = 0; i < collection.Count; i++)
                    {
                        label1.Text += collection[i].Title + "<br>";
                    }
                }
            }
        }
        catch (Exception ex)
        {
            label1.Text = ex.Message;
        }


        Controls.Add(label1);
    }

1 个答案:

答案 0 :(得分:0)

奇怪的是,你需要做两件事:

1)删除开始和结束标签;

2)确保查询不以空行开头或结尾。

然后结果会改变正确的结果。