Как добавить запрос контента WebPart программно и использовать SPSTALATAQUERY?
-
09-12-2019 - |
Вопрос
Это текущий сценарий.
У меня есть центральный сайт называется: xxx.
У меня есть много субзитов, называемых с именем года: 2012, 2011, 2010 и т. Д.
На центральном участке у меня есть список под названием бенефициаров.
На всех годах У меня есть список называется запрос, каждый из этих списков имеет столбец поиска в список бенефициаров на центральном сайте.
Мне нужно создать один веб-сайт на центральном сайте, чтобы показать все запросы, что бенериарий имеет на всех сабстральных сайтах.(Год сайты).Интересно, сделает ли WebPart ChaptyQuery WebPart WebPart, потому что я думаю, что мне придется использовать SPSTIPLEATAQUERY, а не использовать Ssquery.
Это код, который у меня есть до сих пор.
/// <summary>
/// Update dashboard beneficieries.
/// </summary>
/// <param name="currentUnsafeWeb"></param>
private void UpdateDashboardBeneficiaries(SPWeb currentUnsafeWeb)
{
Logger.LogDebug("NLSubsidiesSiteConfigSubsidyCentralEventReceiver", "UpdateDashboardBeneficiaries(SPWeb currentUnsafeWeb)", "BEGIN");
SPFile page = null;
try
{
page = currentUnsafeWeb.GetFile("beneficiaries.aspx");
page.CheckOut();
//Add Content Query WebPart or something else to show all request in all yearsubsites that are related to the beneficiaries list.
page.CheckIn(string.Empty);
}
catch (Exception)
{
if (page != null) page.UndoCheckOut();
throw;
}
Logger.LogDebug("NLSubsidiesSiteConfigSubsidyCentralEventReceiver", "ConfigureDashboardBeneficiaries(SPWeb currentWeb)", "END");
}
. Решение
Как уже упоминалось, вы можете использовать SPLIMICEDWEBPARTMANAGER, чтобы добавить программу программирования WebParts.Образец кода для SPSiteataQuery выглядит так: SPSTITALATAQUERY QUERY= NEW SPSTITALATAQUERY ();
//Specify the fields which need to be shown.
query.ViewFields = "<FieldRef Name=\"Title\" />" +
"<FieldRef Name=\"Type\" />" +
"<FieldRef Name=\"AssignedTo\" />" +
"<FieldRef Name=\"Status\" />" +
"<FieldRef Name=\"DueDate\" />";
query.Lists = "<Lists BaseType='0'/>";
query.Query = "<Where><Lt><FieldRef Name='ID' /><Value Type='Counter'>0</Value></Lt></Where>";
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\" />";
DataTable table = web.GetSiteData(query);
. Другие советы
Чтобы добавить WebPart Programed, вы должны использовать spliticizedwebpartmanager
Для примера (включая contentbyquerywebpart) см. Как создать экземпляры веб-части на страницах с использованием функций - FevelureCeiver - SPLITICEDWEBPARTMANAGER
Пример кода для выполнения того же, если приведен ниже.
ContentEditorWebPart wp = new ContentEditorWebPart();
//Add the webpart to the page
SPLimitedWebPartManager pageMgr = web.GetLimitedWebPartManager(pageURL, System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
pageMgr.AddWebPart(wp, "Main", 0);
//Save the page with the changes
pageMgr.SaveChanges(wp);
.