Класс CbqQueryCache
Кэширует CbqQueryVersionInfo для указанного Содержимого веб-части запроса. Этот класс не может наследоваться.
Иерархия наследования
System.Object
Microsoft.SharePoint.Publishing.CbqQueryCache
Пространство имен: Microsoft.SharePoint.Publishing
Сборка: Microsoft.SharePoint.Publishing (в Microsoft.SharePoint.Publishing.dll)
Синтаксис
'Декларация
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel := True)> _
<SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel := True)> _
Public NotInheritable Class CbqQueryCache
'Применение
Dim instance As CbqQueryCache
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
public sealed class CbqQueryCache
Замечания
Метод FetchCbqQueryInfoFromCache() используется для указания содержимого веб-части запроса для получения веб-узла, веб-, страницы или GUID веб части и сохранить его в свойство UserQueryVersionInfo экземпляра CbqQueryCache .
Примеры
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.Publishing;
using System.IO;
public partial class CBQCachePage : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
// For this to work the page has to have the "web", "page", and "wp" query parameters passed to it
base.OnLoad(e);
string webUrl = Request.QueryString["web"];
Guid pageGuid = new Guid(Request.QueryString["page"]);
Guid webpartGuid = new Guid(Request.QueryString["wp"]);
CbqQueryVersionInfo queryVersionInfo = null;
try
{
// Try and create a new CbqQueryCache and get the Query from it and display it on the page
CbqQueryCache queryCache = new CbqQueryCache(this.Page.Cache, webUrl, pageGuid, webpartGuid, 120, Request.Url.Query);
this.queryLabel.Text = queryCache.UserQueryVersionInfo.VersionCrossListQueryInfo.Query;
}
catch (InvalidOperationException)
{
queryVersionInfo = null;
}
catch (FileNotFoundException)
{
queryVersionInfo = null;
}
catch (ArgumentOutOfRangeException)
{
queryVersionInfo = null;
}
// User either has no rights
// Or the web part does not exist
if (queryVersionInfo == null)
{
Response.StatusCode = 404;
Response.End();
}
}
}using System;using System.Globalization;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Collections.Generic;using Microsoft.SharePoint;using Microsoft.SharePoint.WebControls;using Microsoft.SharePoint.WebPartPages;using Microsoft.SharePoint.Utilities;using Microsoft.SharePoint.ApplicationPages;using Microsoft.SharePoint.Publishing.WebControls;using Microsoft.SharePoint.Publishing;namespace CodeSampleNamespace{ public class CodeSample : LayoutsPageBase { protected System.Web.UI.WebControls.Panel panel; protected override void OnLoad(EventArgs e) {base.OnLoad(e);// Example 1{ string webUrl = Request.QueryString["webUrl"]; Guid pageGuid = new Guid(Request.QueryString["pageUniqueId"]); Guid webpartGuid = new Guid(Request.QueryString["wpStorageKey"]); int cacheFeedTime = 800; // Retrieve Content Query Web Part information from the cache. CbqQueryCache queryCache = new CbqQueryCache(this.Page.Cache, webUrl, pageGuid, webpartGuid, cacheFeedTime); // Execute Query CbqQueryVersionInfo userCbqQuery = queryCache.UserQueryVersionInfo; CrossListQueryCache xlqCache = new CrossListQueryCache(userCbqQuery.VersionCrossListQueryInfo); DataTable data = xlqCache.GetSiteData(SPContext.Current.Site); // Perform ProcessData delegate that is specified on this web part if (userCbqQuery.ProcessDataDelegate != null) { data = userCbqQuery.ProcessDataDelegate(data); } // Create a new Content Query Web Part. ContentByQueryWebPart cbq = new ContentByQueryWebPart(); // Store the data in the new Content By Query Web Part. cbq.Data = data; panel.Controls.Add(cbq);}// Example 2{ string webUrl = Request.QueryString["webUrl"]; Guid pageGuid = new Guid(Request.QueryString["pageUniqueId"]); Guid webpartGuid = new Guid(Request.QueryString["wpStorageKey"]); int cacheFeedTime = 800; // Retrieve Content By Query Web Part information from the cache. CbqQueryCache query = new CbqQueryCache(this.Page.Cache, webUrl, pageGuid, webpartGuid, cacheFeedTime); // Retrieve Information about the current user query. CbqQueryVersionInfo userCbqQuery = query.UserQueryVersionInfo; // Set Query Information on a new CBQ web part ContentByQueryWebPart cbq = new ContentByQueryWebPart(); cbq.FeedTitle = userCbqQuery.FeedTitle; cbq.FeedDescription = userCbqQuery.FeedDescription; cbq.UseCopyUtil = userCbqQuery.UseCopyUtil; cbq.DataColumnRenames = userCbqQuery.DataColumnRenames; cbq.ProcessDataDelegate = userCbqQuery.ProcessDataDelegate; CrossListQueryInfo crossListInfo = userCbqQuery.VersionCrossListQueryInfo; cbq.QueryOverride = crossListInfo.Query; cbq.WebsOverride = crossListInfo.Webs; cbq.ViewFieldsOverride = crossListInfo.ViewFields; cbq.UseCache = crossListInfo.UseCache; cbq.WebUrl = crossListInfo.WebUrl; if (crossListInfo.RowLimit == uint.MaxValue) { cbq.ItemLimit = -1; } else { cbq.ItemLimit = (int)crossListInfo.RowLimit; } // The List Override takes a string.Format. Therefore, you must encode { and } before passing it back. string listOverride = crossListInfo.Lists; listOverride = listOverride.Replace("{", "{{"); listOverride = listOverride.Replace("}", "}}"); cbq.ListsOverride = listOverride; // Set items that may affect Audience Targetting. cbq.ShowUntargetedItems = crossListInfo.ShowUntargetedItems; cbq.FilterByAudience = crossListInfo.FilterByAudience; if (crossListInfo.GroupByAudience) { cbq.GroupBy = "{" + FieldId.AudienceTargeting.ToString() + "}"; } if (crossListInfo.GroupByAscending) { cbq.GroupByDirection = ContentByQueryWebPart.SortDirection.Asc; } panel.Controls.Add(cbq);} }
Imports SystemImports System.GlobalizationImports System.WebImports System.Web.UIImports System.Web.UI.WebControlsImports System.DataImports System.Collections.GenericImports Microsoft.SharePointImports Microsoft.SharePoint.WebControlsImports Microsoft.SharePoint.WebPartPagesImports Microsoft.SharePoint.UtilitiesImports Microsoft.SharePoint.ApplicationPagesImports Microsoft.SharePoint.Publishing.WebControlsImports Microsoft.SharePoint.PublishingNamespace CodeSampleNamespace Public Class CodeSample Inherits LayoutsPageBase Protected panel As System.Web.UI.WebControls.Panel Protected Overrides Sub OnLoad(ByVal e As EventArgs)MyBase.OnLoad(e)' Example 1 Dim webUrl As String = Request.QueryString("webUrl") Dim pageGuid As New Guid(Request.QueryString("pageUniqueId")) Dim webpartGuid As New Guid(Request.QueryString("wpStorageKey")) Dim cacheFeedTime As Integer = 800 ' Retrieve Content Query Web Part information from the cache. Dim queryCache As New CbqQueryCache(Me.Page.Cache, webUrl, pageGuid, webpartGuid, cacheFeedTime) ' Execute Query Dim userCbqQuery As CbqQueryVersionInfo = queryCache.UserQueryVersionInfo Dim xlqCache As New CrossListQueryCache(userCbqQuery.VersionCrossListQueryInfo) Dim data As DataTable = xlqCache.GetSiteData(SPContext.Current.Site) ' Perform ProcessData delegate that is specified on this web part If userCbqQuery.ProcessDataDelegate IsNot Nothing Then data = userCbqQuery.ProcessDataDelegate(data) End If ' Create a new Content Query Web Part. Dim cbq As New ContentByQueryWebPart() ' Store the data in the new Content By Query Web Part. cbq.Data = data panel.Controls.Add(cbq)' Example 2 Dim webUrl As String = Request.QueryString("webUrl") Dim pageGuid As New Guid(Request.QueryString("pageUniqueId")) Dim webpartGuid As New Guid(Request.QueryString("wpStorageKey")) Dim cacheFeedTime As Integer = 800 ' Retrieve Content By Query Web Part information from the cache. Dim query As New CbqQueryCache(Me.Page.Cache, webUrl, pageGuid, webpartGuid, cacheFeedTime) ' Retrieve Information about the current user query. Dim userCbqQuery As CbqQueryVersionInfo = query.UserQueryVersionInfo ' Set Query Information on a new CBQ web part Dim cbq As New ContentByQueryWebPart() cbq.FeedTitle = userCbqQuery.FeedTitle cbq.FeedDescription = userCbqQuery.FeedDescription cbq.UseCopyUtil = userCbqQuery.UseCopyUtil cbq.DataColumnRenames = userCbqQuery.DataColumnRenames cbq.ProcessDataDelegate = userCbqQuery.ProcessDataDelegate Dim crossListInfo As CrossListQueryInfo = userCbqQuery.VersionCrossListQueryInfo cbq.QueryOverride = crossListInfo.Query cbq.WebsOverride = crossListInfo.Webs cbq.ViewFieldsOverride = crossListInfo.ViewFields cbq.UseCache = crossListInfo.UseCache cbq.WebUrl = crossListInfo.WebUrl If crossListInfo.RowLimit = UInteger.MaxValue Then cbq.ItemLimit = -1 Else cbq.ItemLimit = CInt(Fix(crossListInfo.RowLimit)) End If ' The List Override takes a string.Format. Therefore, you must encode { and } before passing it back. Dim listOverride As String = crossListInfo.Lists listOverride = listOverride.Replace("{", "{{") listOverride = listOverride.Replace("}", "}}") cbq.ListsOverride = listOverride ' Set items that may affect Audience Targetting. cbq.ShowUntargetedItems = crossListInfo.ShowUntargetedItems cbq.FilterByAudience = crossListInfo.FilterByAudience If crossListInfo.GroupByAudience Then cbq.GroupBy = "{" & FieldId.AudienceTargeting.ToString() & "}" End If If crossListInfo.GroupByAscending Then cbq.GroupByDirection = ContentByQueryWebPart.SortDirection.Asc End If panel.Controls.Add(cbq) End Sub End ClassEnd Namespace
Потокобезопасность
Любые общедоступные элементы static (Shared в Visual Basic) этого типа являются потокобезопасными. Не гарантируется, что любые элементы экземпляров потокобезопасны.
См. также
Справочные материалы
Пространство имен Microsoft.SharePoint.Publishing
#ctor(Cache, String, Guid, Guid, Int32)