【问题标题】:querying whole site collection sharepoint查询整个网站集共享点
【发布时间】:2010-02-05 03:19:17
【问题描述】:

我有一个 webpart,它是顶级站点下的 2-3 个子站点。我需要查询顶级站点集合中的列表和同一级别的列表,我想它可能通过 SPSiteDataquery...我对此有一些困惑我可以编写一个可以查询这两个列表的查询...。

此查询的范围是 sitecollection,这意味着它会查看 sitecollection 中的所有列表。如果我的 CAML 查询对于这两个列表都相同...它应该可以工作吗?

让我通过我的代码来解释一下:

SPSite mySite = SPControl.GetContextSite(Context);
                SPWeb myWeb = SPControl.GetContextWeb(Context);
                SPSiteDataQuery qry = new SPSiteDataQuery();
                qry.Lists = "<Lists BaseType='0' />";

                qry.Query = "<Where><Contains><FieldRef Name='Country'/><Value Type='Text'>" + strcount + "</Value></Contains></Where>";

                qry.ViewFields = "<FieldRef Name='Capital' Nullable='TRUE'/><FieldRef Name='Currency' Nullable='TRUE'/>";

                qry.Webs = "<Webs Scope='SiteCollection' />";

                DataTable dt = myWeb.GetSiteData(qry);

现在我需要顶级站点列表中的货币和同一级别列表中的资本。这可能吗?还是我误解了 SPSiteDataQuery...?

【问题讨论】:

  • 您的两个列表中有哪些列?两个列表中的列是否相同?

标签: sharepoint caml


【解决方案1】:

您在正确的轨道上,并且可以检索不同网站中列表的结果。以下示例显示了如何从默认的“任务”或“工作流任务”列表中检索项目,并使用在根级别和子站点内创建的任务列表。

        SPSiteDataQuery q = new SPSiteDataQuery();
        q.ViewFields = "<FieldRef Name='Title'/><FieldRef Name='Priority'/><FieldRef Name='Status'/>";
        q.Webs = "<Webs Scope='SiteCollection' />";
        q.Lists = "<Lists BaseType='0' />";
        q.Query = "<Where><Gt><FieldRef Name='ID' /><Value Type='Number'>0</Value></Gt></Where>";

        DataTable results = new DataTable();

        using (SPSite site = new SPSite("http://sharepoint"))
        {
            using (SPWeb web = site.OpenWeb("subsite"))
            {                    
                results = web.GetSiteData(q);
            }
        }

我使用硬编码的 URL 编写了它,因此您可以在控制台应用程序中运行它以进行测试,但是当您将其放入 Web 部件中时,您可以将 using 语句替换为 SPWeb web = SPContext.Current.Web; 之类的内容。

其他一些值得考虑的事情:

  • 您要查询的列表必须包含 所有 ViewFields 元素中的字段
  • 多查找字段不适用于 SPSiteDataQuery(单值查找字段可以)
  • u2u CAML 构建器工具也可用于测试 CAML 查询。见http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多