Программно установка CAML-запроса на запрос на заказ пользовательский веб-сайт, который наследуется от ContentByVeryWebPart
-
12-11-2019 - |
Вопрос
Название в значительной степени суммирует, что я ищу. Я создал пользовательский веб-сайт в Visual Studio 2010, для решения SharePoint 2010, который вытекает из ContentbyQueryWebPart. Целью веб-панель является поиск пользователей Обзор своих собственных задач, взятых из нескольких списков задач. Нет проблем до сих пор.
Но я переопределил метод OnInit-метод, чтобы получить некоторые данные из URL-запроса (с помощью Page.Request), чтобы сделать какую-то пользовательскую фильтрацию, группировку и сортировку. Проблема в том, что пользовательский CQWP не приведет к созданию строки CAML.
Я уже попробовал некоторые подходы, но ни один из них не казалось, работал. Я даже отделил его до минимума. Может быть, место, где я устанавливаю queroverride, неправильно. (Oninit / onload / до или после базы.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);
}
.
Я надеюсь, что у кого-то есть идея. Любая помощь оценила. Если есть еще что-то неясное, пожалуйста, не стесняйтесь спрашивать.
Markus Schwalbe
Примечание: английский не мой первый язык, поэтому, пожалуйста, извините за каждую ошибку, которую я сделал в этом посте. :)
Решение
Я нашел решение для этого. Похоже, это не хотел, чтобы пользователь-тег как значение.
Работает как очарование, когда вы используете имя-атрибут текущего (или любого другого) SPUSER-объекта и измените тип значения на «текст»: (Кроме того, вы можете оставить тег запроса, а «можно заменить», что выглядит keyal Cleaner)
this.QueryOverride = "<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Text'>" + SPContext.Current.Web.CurrentUser.Name + "</Value></Eq>";
.
Я надеюсь, что это поможет кому-либо, у кого такая же проблема. Искренне,
Markus Schwalbe