Sharepoint 2013 Sharepoint 2013 JSOM:如何迭代列表中的每一项(获取列值)并获取其父查找列表列的信息。
列表1有一个到列表2的查找列。我需要使用JSOM为两个列表提供列值。 目前,我正在从列表1获取executeAsync调用中每个项的列值Sharepoint 2013 Sharepoint 2013 JSOM:如何迭代列表中的每一项(获取列值)并获取其父查找列表列的信息。,sharepoint-2013,Sharepoint 2013,列表1有一个到列表2的查找列。我需要使用JSOM为两个列表提供列值。 目前,我正在从列表1获取executeAsync调用中每个项的列值 var List1 = context.get_web().get_lists().getByTitle('List1'); var List2 = context.get_web().get_lists().getByTitle('List2'); var collListItem = List1.getItems(camlQuery); context.l
var List1 = context.get_web().get_lists().getByTitle('List1');
var List2 = context.get_web().get_lists().getByTitle('List2');
var collListItem = List1.getItems(camlQuery);
context.load(collListItem);
context.executeQueryAsync(onQuerySucceeded, onQueryFailed);
function onQuerySucceeded(sender, args) {
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
var listItemProject = oListItem.get_item('ProjectID'); // my lookup column
var listProjectLookupId = listItemProject.get_lookupId();
var itemProject = List2.getItemById(listProjectLookupId);
var country= null;
context.load(itemProject);
context.executeQueryAsync(function () {
country = itemProject.get_item('Country'); // columns from List2
});
// using column values from both lists
}
enter code here
但在第二个异步调用中,我得到了空值。。可能它们不是一个接一个地发生。我建议您利用从父/子列表检索数据 假设以下列表:
-包含联系人
查找字段(目标列表:国家
)国家
国家/地区
function createJoinQuery(joinListTitle,joinFieldName,projectedFields)
{
var queryText =
"<View>" +
"<Query/>" +
"<ProjectedFields>";
for(var idx in projectedFields) {
queryText += String.format("<Field Name='{0}_{1}' Type='Lookup' List='{0}' ShowField='{1}' />",joinListTitle,projectedFields[idx]);
}
queryText +=
"</ProjectedFields>" +
"<Joins>" +
"<Join Type='INNER' ListAlias='{0}'>" +
"<Eq>" +
"<FieldRef Name='{1}' RefType='Id'/>" +
"<FieldRef List='{0}' Name='ID'/>" +
"</Eq>" +
"</Join>" +
"</Joins>" +
"</View>";
var qry = new SP.CamlQuery();
qry.set_viewXml(String.format(queryText,joinListTitle,joinFieldName));
return qry;
}
function getListItems(listTitle,joinListTitle,joinFieldName,projectedFields,success,error)
{
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle(listTitle);
var items = list.getItems(createJoinQuery(joinListTitle,joinFieldName,projectedFields));
ctx.load(items);
ctx.executeQueryAsync(
function() {
success(items);
},
error
);
}
var listTitle = 'Contacts';
var joinListTitle = 'Countries'
var joinFieldName = 'Country';
var projectedFields = ['ID','Title'];
getListItems(listTitle,joinListTitle,joinFieldName,projectedFields,
function(items){
//print items
for(var i = 0; i < items.get_count(); i++){
var item = items.getItemAtIndex(i);
var contactName = item.get_item('Title');
var countryName = item.get_item('Countries_Title').get_lookupValue();
}
},
function(sender,args){
console.log(args.get_message());
});
函数createJoinQuery(joinListTitle、joinFieldName、projectedFields)
{
变量queryText=
"" +
"" +
"";
for(项目字段中的变量idx){
queryText+=String.format(“”,joinListTitle,projectedFields[idx]);
}
queryText+=
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"";
var qry=new SP.CamlQuery();
set_viewXml(String.format(queryText、joinListTitle、joinFieldName));
返回qry;
}
函数getListItems(listTitle、joinListTitle、joinFieldName、projectedFields、success、error)
{
var ctx=SP.ClientContext.get_current();
var web=ctx.get_web();
var list=web.get_list().getByTitle(listTitle);
var items=list.getItems(createJoinQuery(joinListTitle,joinFieldName,projectedFields));
ctx.荷载(项目);
ctx.executeQueryAsync(
函数(){
成功(项目);
},
错误
);
}
用法
function createJoinQuery(joinListTitle,joinFieldName,projectedFields)
{
var queryText =
"<View>" +
"<Query/>" +
"<ProjectedFields>";
for(var idx in projectedFields) {
queryText += String.format("<Field Name='{0}_{1}' Type='Lookup' List='{0}' ShowField='{1}' />",joinListTitle,projectedFields[idx]);
}
queryText +=
"</ProjectedFields>" +
"<Joins>" +
"<Join Type='INNER' ListAlias='{0}'>" +
"<Eq>" +
"<FieldRef Name='{1}' RefType='Id'/>" +
"<FieldRef List='{0}' Name='ID'/>" +
"</Eq>" +
"</Join>" +
"</Joins>" +
"</View>";
var qry = new SP.CamlQuery();
qry.set_viewXml(String.format(queryText,joinListTitle,joinFieldName));
return qry;
}
function getListItems(listTitle,joinListTitle,joinFieldName,projectedFields,success,error)
{
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle(listTitle);
var items = list.getItems(createJoinQuery(joinListTitle,joinFieldName,projectedFields));
ctx.load(items);
ctx.executeQueryAsync(
function() {
success(items);
},
error
);
}
var listTitle = 'Contacts';
var joinListTitle = 'Countries'
var joinFieldName = 'Country';
var projectedFields = ['ID','Title'];
getListItems(listTitle,joinListTitle,joinFieldName,projectedFields,
function(items){
//print items
for(var i = 0; i < items.get_count(); i++){
var item = items.getItemAtIndex(i);
var contactName = item.get_item('Title');
var countryName = item.get_item('Countries_Title').get_lookupValue();
}
},
function(sender,args){
console.log(args.get_message());
});
var listTitle='Contacts';
var joinListTitle='国家'
var joinFieldName='国家';
var projectedFields=['ID','Title'];
getListItems(listTitle、joinListTitle、joinFieldName、projectedFields、,
功能(项目){
//打印项目
对于(var i=0;i
我知道这是一个旧线程,但我认为本文将帮助未来的用户了解如何