У меня есть 2 списка на онлайн-сайте SharePoint.
- Участники (Id, Name)
- Адрес участника (Member (Поиск в списке участников), Address)
Ожидаемый результат:
Id, Name, Address
Я пытаюсь получить данные из обоих списков, используя запрос на соединение, но получаю ошибку.Мой код и ошибка следующие:
<script type="text/javascript">
function useRESTwithCAML(CAML) {
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Members');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml(CAML);
this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
};
var CAMLJoins =
"<Joins>" +
"<Join Type='LEFT' ListAlias='Member Address'>" +
"<Eq>" +
"<FieldRef Name='ID' RefType='Id'/>" +
"<FieldRef List='Member Address' Name='Member'/>" +
"</Eq>" +
"</Join></Joins>";
var CAMLProjFlds =
"<ProjectedFields>" +
"<Field Name='Address' Type='Number' List='Address' ShowField='ID'/>" +
"</ProjectedFields>";
var ViewXml = "<View>" +
"<ViewFields>" +
"<FieldRef Name='Name'/>" +
"</ViewFields>" + CAMLJoins +
"</View>";
function onQuerySucceeded(sender, args) {
var listItemInfo = '';
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
listItemInfo += '\nID: ' + oListItem.get_id() +
'\nTitle: ' + oListItem.get_item('Name') +
'\nDLastName: ' + oListItem.get_item('Address');
}
alert(listItemInfo.toString());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Я получаю следующую ошибку:
"Value does not fall within the expected range."
У меня есть еще 10 списков, и у каждого списка есть "Участник"столбец поиска, я хочу присоединиться к ним всем.Пожалуйста, дайте мне знать, если я что-то упустил или я делаю что-то не так.
Заранее спасибо.