【问题标题】:SPSiteDataQuery throwing exception while setting it's Query propertySPSiteDataQuery 在设置它的 Query 属性时抛出异常
【发布时间】:2011-11-04 17:04:44
【问题描述】:

我正在查询 SharePoint 网站中的多个任务列表。在设置 Query 属性并指定 OrderBy 子句之前,我可以检索结果。详细的异常和代码粘贴在下面。感谢任何帮助

   private void doTasks(SPWeb currentWeb, SPSiteDataQuery q)
    {

        q.Query =
             "<OrderBy>" +
             "   <FieldRef Name='Priority' />" +
             "   <FieldRef Name='DueDate' />" +
             "</OrderBy>";


        // Specify the view fields.
        q.ViewFields = "<FieldRef Name='Title' Type='Text'/>";
        q.ViewFields += "<FieldRef Name='AssignedTo' Type='User' Nullable='TRUE' />";
        q.ViewFields += "<FieldRef Name='PercentComplete' Type='Number' Nullable='TRUE'/>";
        results = currentWeb.GetSiteData(q);

        if (results.Rows.Count > 0)
        {
                 //blah!
        }
    }

[COMException (0x80020009): 0x80020009] Microsoft.SharePoint.Library.SPRequestInternalClass.CrossListQuery(字符串 bstrUrl,字符串 bstrXmlWebs,字符串 bstrXmlLists,字符串 bstrXmlQuery,ISP2DSafeArrayWriter pCallback,对象和 pvarColumns)+0 Microsoft.SharePoint.Library.SPRequest.CrossListQuery(String bstrUrl, String bstrXmlWebs, String bstrXmlLists, String bstrXmlQuery, ISP2DSafeArrayWriter pCallback, Object& pvarColumns) +174

[SP异常] Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx) +27428978 Microsoft.SharePoint.Library.SPRequest.CrossListQuery(字符串 bstrUrl,字符串 bstrXmlWebs,字符串 bstrXmlLists,字符串 bstrXmlQuery,ISP2DSafeArrayWriter pCallback,对象和 pvarColumns)+27812419 Microsoft.SharePoint.SPWeb.GetSiteData(SPSiteDataQuery 查询) +521 StoraEnso.Collaboration.WebParts.SubSiteItemAggregator.SubSiteItemAggregator.doTasks(SPWeb currentWeb,SPSiteDataQuery q)+189 StoraEnso.Collaboration.WebParts.SubSiteItemAggregator.SubSiteItemAggregator.Render(HtmlTextWriter 作家)+441 Microsoft.SharePoint.WebPartPages.SPChrome.RenderPartContents(HtmlTextWriter 输出,WebPart 部分)+43

[WebPartException] Microsoft.SharePoint.WebPartPages.SPChrome.RenderPartContents(HtmlTextWriter 输出,WebPart 部分)+19826502 Microsoft.SharePoint.WebPartPages.SPChrome.RenderWebPart(HtmlTextWriter 输出,WebPart 部分)+64 Microsoft.SharePoint.WebPartPages.WebPartZone.RenderZoneCell(HtmlTextWriter 输出,布尔 bMoreParts,WebPart 部分)+1997 Microsoft.SharePoint.WebPartPages.WebPartZone.RenderWebParts(HtmlTextWriter 输出,ArrayList webParts)+508 Microsoft.SharePoint.WebPartPages.WebPartZone.Render(HtmlTextWriter 输出)+1000 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+240 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+240 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +42 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+240 System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter 作家)+253 System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter 输出)+87 System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)+53 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+240 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +42 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+240 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 孩子)+240 System.Web.UI.Page.Render(HtmlTextWriter writer) +38 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4240

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

    在迁移过程中,一些页面布局使用 SPSiteDataQuery 跨不同网站查询 ContentType 以获取内容。该代码在 SP2007 中运行良好,但在 SP2010 中抛出异常,如下所述:

    解决方案

    确保您用于排序依据的字段包含在 SPSiteDataQuery.ViewFields 属性中。就这么简单!

    【讨论】:

      【解决方案2】:

      OrderBy 子句包装在&lt;Query&gt;&lt;/Query&gt; 中。

      【讨论】:

      【解决方案3】:

      如果您删除 AssignedToPercentComplete FieldRefs 是否有效?我问是因为如果您要查询站点中的所有列表,大多数列表将不包含 AssignedTo 和 PercentComplete 字段。这可能会导致错误。

      q.Lists 的值是多少?如果你还没有设置q.Lists,试试:

      q.Lists = "<Lists ServerTemplate=\"107\" />"
      

      【讨论】:

      • 您好 Rich,我已经设置了 Lists 属性的值,如上所述。如果不设置 OrderBy 子句,则查询有效。
      • 根据上面的代码,您将 q.Query 设置为字符串常量,然后设置为 orderBy。 orderBy 的值是多少?
      • 抱歉有错误但实际代码是q.Query = "&lt;OrderBy&gt;" + " &lt;FieldRef Name='Priority' /&gt;" + " &lt;FieldRef Name='DueDate' /&gt;" + "&lt;/OrderBy&gt;";
      • 我看不出还有什么问题。我已经使用 U2U CAML 查询生成器针对任务列表尝试了您的 ViewFields 和 OrderBy。它工作得很好。也许尝试使用您的列表使用 CAML 查询生成器,看看是否显示仍然有问题。
      • 这就是为什么我也想知道。我也可以尝试其他选项。
      【解决方案4】:

      如果其他人遇到类似问题:我花了两个小时才发现 CAML 查询的最后一行不能是空行。换句话说,在 CAML 查询的末尾不能有任何换行符。删除换行符立即解决了问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        相关资源
        最近更新 更多