CAML SharePoint запрашивают поле “Created By” с именем пользователя

Эй, у меня есть форма для администраторов, где они вставляют имя пользователя ("domain\name"), и код получает и устанавливает некоторую информацию из него.

Это - огромный проект, и некоторые списки содержат имя пользователя как строку ("domain\name"), но некоторые списки только рассчитывают на столбец "Created By", который автосоздается.

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

<Where><Eq><FieldRef Name='UserName'/><Value Type='Text'>domain\\username</Value></Eq></Where>

Спасибо.

6
задан yellowblood 20 May 2010 в 12:07
поделиться

1 ответ

Существует два различных поля "Created By", одно для всех элементов, а другое специально для библиотек документов ("Document Created By"). Внутреннее название поля "Created By" - "Author", поэтому будет лучшим началом. Второе поле, которое является автором фактического файла в библиотеке документов, имеет внутреннее имя "Created_x0020_By". Судя по вашему сценарию, мне кажется, что вам понадобится только первое, но второе все равно полезно знать, потому что данные, хранящиеся в них, отличаются.

"Created By" - это поле пользователя, поэтому строковая версия его данных - ID;#Full Name. Между тем, "Document Created By" - это текстовое поле для одной строки текста, и его данные хранятся как фактическое имя пользователя (с доменом, если применимо). Поэтому ваш вышеприведенный запрос будет работать в случае библиотеки документов и поиска по . Однако если вы хотите выполнить поиск по полю "Created By", вам придется быть немного хитрее, но вы должны быть в состоянии выполнить его, ссылаясь на идентификатор SharePoint ID пользователя. Ниже приведен пример другого запроса поля User, который я использую для сравнения.

<Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID Type='Integer' /></Value></Eq>

Здесь специально отфильтровывается текущий пользователь. Чтобы использовать его в своих целях, замените 'AssignedTo' на 'Author' и на ID пользователя, о котором идет речь.

17
ответ дан 8 December 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: