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

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

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

Я уже пробовал некоторые подходы, но ни один из них, похоже, не работал.Я даже сократил его до минимума.Возможно, место, где я установил QueryOverride, неверно.(OnInit / OnLoad / до или после базы. На **** (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);
}

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

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

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

1 Ответ

0 голосов
/ 29 марта 2011

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

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

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

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

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

...