Расширение веб-части "Запрос контента" с помощью кода - PullRequest
1 голос
/ 03 сентября 2011

Я пытаюсь понять механизм расширения cqwp с помощью кода.

В это может быть трудно поверить, но я не смог найти ни одной статьи для создания веб-части, унаследованной от контента по запросу веб-часть .

Что мне нужно сделать, это ввести имя списка в свойствах веб-части.Тогда все группировки, сортировка и запрос будут реализованы с помощью кода, который находится в расширенной веб-части.

Я прочитал сообщения Вальдека, но они немного продвинуты для использования в качестве шпаргалки.

Образцы Msdn показывают настройку стиля элемента и установку запроса переопределения через панель инструментов свойств веб-части.Мне нужно установить его с помощью кода.

Примечание : Если это не способ настройки cqwp, дайте мне знать.Моя цель - поместить wp в главную страницу и установить имя списка и дождаться отображения результатов (:

Я пытался установить listguid и queryoverride с помощью кода через методы OnInit и ModifyXsltArgument по отдельности. Ничего не возвращалосьи когда я экспортирую wp, listguid и queryoverride, кажется, не установлены.

Я уверен, что делаю что-то не так, поэтому буду признателен за вашу помощь. Заранее спасибо ..

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011

Чтобы унаследовать ContentQueryWebPart, просто сделайте это:

using System;
using System.ComponentModel;
using Microsoft.SharePoint.Publishing.WebControls;
using Microsoft.SharePoint;
using Microsoft.Office.Server.UserProfiles;

namespace YOURNAMESPACE
{
    [ToolboxItemAttribute(false)]
    public class CustomContentQueryWebPart : ContentByQueryWebPart
    {
        protected override void OnLoad(EventArgs e)
        {
            try
            {
                //Reemplazamos [UserContext:<field>] por su valor
                string val, field;
                UserProfile userProfile = getCurrentUserProfile();

                val = this.FilterValue1;
                if (val.StartsWith("[UserContext:") && val.EndsWith("]"))
                {
                    field = val.Substring(13, val.Length - 14);
                    this.FilterValue1 = userProfile[field].Value.ToString();
                }

                val = this.FilterValue2;
                if (val.StartsWith("[UserContext:") && val.EndsWith("]"))
                {
                    field = val.Substring(13, val.Length - 14);
                    this.FilterValue2 = userProfile[field].Value.ToString();
                }

                val = this.FilterValue3;
                if (val.StartsWith("[UserContext:") && val.EndsWith("]"))
                {
                    field = val.Substring(13, val.Length - 14);
                    this.FilterValue3 = userProfile[field].Value.ToString();
                }
            }
            catch (Exception ex) { }
            finally
            {
                base.OnLoad(e);
            }
        }

        private UserProfile getCurrentUserProfile()
        {
            SPUser user = SPContext.Current.Web.CurrentUser;
            //Create a new UserProfileManager
            UserProfileManager pManager = new UserProfileManager();
            //Get the User Profile for the current user
            return pManager.GetUserProfile(user.LoginName);
        }
    }
}

В этом примере я просто добавил фильтр для получения поля из UserProfile, как это делает исходная веб-часть с строкой запроса.Что именно вам нужно?

0 голосов
/ 06 сентября 2011

тогда все группировки, сортировка и запрос будут реализованы через код в расширенной веб-части.

Почему вы хотите закодировать все функции, которые уже доступны в CQWP. Возможно, я упускаю суть. Что касается расширения веб-части, вам просто нужно ее передать.

Смотрите примеры здесь:

http://www.andrewconnell.com/blog/archive/2008/02/18/Subclassing-the-Content-Query-Web-Part-Adding-Dynamic-Filtering.aspx

http://ecqwp.codeplex.com/

Дайте мне знать, каковы ваши точные цели, и я могу помочь вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...