программная установка CAML-запроса на члене QueryOverride настраиваемой веб-части, которая наследуется от ContentByQueryWebPart

Название в значительной степени резюмирует то, что я ищу. Я создал настраиваемую веб-часть в Visual Studio 2010 для решения SharePoint 2010, производную от ContentByQueryWebPart. Цель веб-части - показать пользователям обзор их собственных задач, взятых из нескольких списков задач. Пока проблем нет.

Но я переопределил OnInit-Method, чтобы получить некоторые данные из url-запроса (используя Page.Request), чтобы выполнить некоторую настраиваемую фильтрацию, группировку и сортировку. Проблема в том, что настраиваемый CQWP не принимает созданную мной строку CAML.

Я уже пробовал несколько подходов, но ни один из них, похоже, не работал. Я даже сократил его до минимума. Может быть, место, где я установил QueryOverride, неправильное. (OnInit / OnLoad / до или после base.On **** (e);?) Пока это выглядит так:

protected override void OnInit(EventArgs e)
{
    string query = "<Query><Where><Eq><FieldRef Name=\"AssignedTo\" /><Value Type=\"User\"><UserID /></Value></Eq></Where></Query>";
    this.QueryOverride = query;
    base.OnInit(e);
}

Надеюсь, у кого-то есть идея. Любая помощь приветствуется. Если что-то по-прежнему неясно, не стесняйтесь спрашивать.

Маркус Швальбе

Примечание. Английский не является моим родным языком, поэтому, пожалуйста, извините меня за каждую ошибку, которую я допустил в этом посте. :)


person Markus Schwalbe    schedule 28.03.2011    source источник


Ответы (1)


Я нашел решение для этого. похоже, что он не хотел использовать UserID-tag в качестве значения.

Это работает как шарм, когда вы используете атрибут Name текущего (или любого другого) объекта SPUser и меняете тип значения на «Текст»: (Кроме того, вы можете оставить тег запроса и «можно заменить на ', что выглядит немного чище)

this.QueryOverride = "<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Text'>" + SPContext.Current.Web.CurrentUser.Name + "</Value></Eq>";

Надеюсь, это поможет любому, у кого такая же проблема. искренне

Маркус Швальбе

person Markus Schwalbe    schedule 29.03.2011