Javascript 需要使用CSOM和CAML查询获取LookupList值的帮助吗

Javascript 需要使用CSOM和CAML查询获取LookupList值的帮助吗,javascript,ajax,sharepoint,sharepoint-2010,csom,Javascript,Ajax,Sharepoint,Sharepoint 2010,Csom,SHAREPOINT 2010用户 我有一个充满项目的SharePoint列表,其中一个字段是“主题”。我希望能够返回这些值。如果我使用实际的字段标题,我将得到与对象值相反的[Object Object]。我想知道我使用的术语是否有问题,因为它们与.Net非常相似 无论如何,这是我到目前为止所拥有的 <!DOCTYPE html> <%@ Page language="C#" %> <%@ Register Tagprefix="SharePoint"

SHAREPOINT 2010用户

我有一个充满项目的SharePoint列表,其中一个字段是“主题”。我希望能够返回这些值。如果我使用实际的字段标题,我将得到与对象值相反的[Object Object]。我想知道我使用的术语是否有问题,因为它们与.Net非常相似

无论如何,这是我到目前为止所拥有的

<!DOCTYPE html> 

<%@ Page language="C#" %> 

<%@ Register Tagprefix="SharePoint" 

     Namespace="Microsoft.SharePoint.WebControls" 

     Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 

<%@ Import Namespace="Microsoft.SharePoint" %> 

<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"> 

<head> 

<meta name="WebPartPageExpansion" content="full" /> 

    <!-- the following 5 js files are required to use CSOM --> 

    <script type="text/javascript" src="/_layouts/1033/init.js"></script> 

    <script type="text/javascript" src="/_layouts/MicrosoftAjax.js"></script> 

    <script type="text/javascript" src="/_layouts/sp.core.js"></script> 

    <script type="text/javascript" src="/_layouts/sp.runtime.js"></script> 

    <script type="text/javascript" src="/_layouts/sp.js"></script> 

 <script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script> 

<SharePoint:FormDigest ID="FormDigest1" runat="server"></SharePoint:FormDigest> 



    <script type="text/ecmascript"> 







  window.onload = function OnLoad() { 





SP.SOD.executeFunc('sp.js','SP.ClientContext',retrieveListItems()); 



var oList; 



function retrieveListItems() { 



var Url = '/Policies'; 



    var clientContext = new SP.ClientContext(Url);     //.(Url); //SP.ClientContext.get_current(); 



   var oList = clientContext.get_web().get_lists().getByTitle('HRPolicies'); 
 var oListTags = clientContext.get_web().get_lists().getByTitle('TopicsSF'); 

//var field = oList.get_fields().getByInternalNameOrTitle("HRTopics");    
//var lookupField = clientContext.CastTo<FieldLookup>(field); 

//var childIdField = oList["HRTopics"] as FieldLookupValue[];

//if (childIdField != null)
//{
 //   foreach(var lookupValue in childIdField)
  //  {
  //      var childId_Value = lookupValue.LookupValue;
  //      var childId_Id = lookupValue.LookupId;
  //  }
//}

//end if no working, try field itself as getllokup as

    var camlQuery = new SP.CamlQuery(); 

   camlQuery.set_viewXml(multiLookupValues); 

   // this.collListItem = oList.getItems(camlQuery); 

     var PertinentItems = oList.getItems(camlQuery); 

clientContext.Load(item, i => i["HRTopics"]);
       clientContext.Load(items);
        clientContext.ExecuteQuery();
        var lookupValues = new ArrayList();
        FieldLookupValue[] values = item["HRTopics"] as FieldLookupValue[];
        foreach (ListItem listItem in items)
        {
            var lookupValue = new FieldLookupValue { LookupId = listItem.Id };
            lookupValues.label;
        }
        item.ParseAndSetFieldValue(lookupColumnName, null);
        item["HRTopics"] = lookupValues.ToArray();
        ctx.ExecuteQuery();

 //   var lookupListId = new Guid(lookupField.LookupList);
  //  var lookupList = clientContext.Web.Lists.GetById(lookupListId);
//
  //  clientContext.load(collListItem,lookupField); 

   // works alert("birds"); 



   // clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));        

    clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);        
//




//} 



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('Title') + 
 '\nHRTopics: ' + oListItem.get_item('HRTopics') 
    } 





  document.getElementById('realData').innerHTML = listItemInfo.toString();



} 



function onQueryFailed(sender, args) { 



    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 

} 

} 





    </script> 





<!--[if gte mso 9]> 

<SharePoint:CTFieldRefs runat=server Prefix="mso:" FieldList="FileLeafRef,WikiField,_dlc_DocId,_dlc_DocIdUrl,_dlc_DocIdPersistId"><xml>







































<mso:CustomDocumentProperties> 

<mso:_dlc_DocId msdt:dt="string">SCP5UENJTFED-1359-20</mso:_dlc_DocId> 

<mso:_dlc_DocIdItemGuid msdt:dt="string">7d65ee24-642b-450f-8285-a1fd946836f4</mso:_dlc_DocIdItemGuid> 

<mso:_dlc_DocIdUrl msdt:dt="string">site/_layouts/DocIdRedir.aspx?ID=SCP5UENJTFED-1359-20, SCP5UENJTFED-1359-20</mso:_dlc_DocIdUrl> 

</mso:CustomDocumentProperties> 

</xml></SharePoint:CTFieldRefs><![endif]--> 

</head> 

<body> 

   <div id="realData">

     </div>   

</body> 

</html>​

window.onload=函数onload(){
SP.SOD.executeFunc('SP.js','SP.ClientContext',retrieveListItems());
变形金刚;
函数retrieveListItems(){
var Url='/Policies';
var clientContext=new SP.clientContext(Url);//(Url);//SP.clientContext.get_current();
var oList=clientContext.get_web().get_list().getByTitle('HRPolicys');
var oListTags=clientContext.get_web().get_lists().getByTitle('TopicsSF');
//var field=oList.get_fields().getByInternalNameOrTitle(“HRTopics”);
//var lookupField=clientContext.CastTo(字段);
//var childIdField=oList[“HRTopics”]作为FieldLookupValue[];
//if(childIdField!=null)
//{
//foreach(childIdField中的var lookupValue)
//  {
//var childId_Value=lookupValue.lookupValue;
//var childId_Id=lookupValue.LookupId;
//  }
//}
//如果没有工作,请将字段本身作为getllokup尝试
var camlQuery=new SP.camlQuery();
camlQuery.set_viewXml(多查找值);
//this.collListItem=oList.getItems(camlQuery);
var PertinentItems=oList.getItems(camlQuery);
Load(item,i=>i[“HRTopics”]);
clientContext.Load(项目);
clientContext.ExecuteQuery();
var lookupValues=new ArrayList();
FieldLookupValue[]值=项[“HRTopics”]作为FieldLookupValue[];
foreach(项目中的ListItem ListItem)
{
var lookupValue=newfieldlookupvalue{LookupId=listItem.Id};
lookupValues.label;
}
item.ParseAndSetFieldValue(lookupColumnName,null);
item[“HRTopics”]=lookupValues.ToArray();
ctx.ExecuteQuery();
//var lookupListId=新Guid(lookupField.LookupList);
//var lookupList=clientContext.Web.Lists.GetById(lookupListId);
//
//load(collListItem,lookupField);
//工程警报(“鸟类”);
//clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceed),Function.createDelegate(this,this.onQueryFailed));
executeQueryAsync(onQuerySucceeded,onQueryFailed);
//
//} 
函数onquerysucceed(发送方,参数){
var listItemInfo='';
var listItemEnumerator=collListItem.getEnumerator();
while(listItemEnumerator.moveNext()){
var oListItem=listItemEnumerator.get_current();
listItemInfo+='\nID:'+oListItem.get_id()+
'\n标题:'+oListItem.get_项目('Title')+
'\nHRTopics:'+oListItem.get_项('HRTopics'))
} 
document.getElementById('realData').innerHTML=listItemInfo.toString();
} 
函数onQueryFailed(发送方,参数){
警报('请求失败。'+args.get_message()+'\n'+args.get_stackTrace());
} 
} 
​

通过JavaScript对象模型为查找列返回的值是复合对象(具有多个属性),而不是原语或字符串。您可能希望访问所查找项的ID或所查找字段的文本值,因此它将同时返回这两个值

尝试将
.get\u lookupValue()
添加到
oListItem.get\u项目('HRTopics')
的末尾

编辑:

如果lookup列允许多个值,则
.get\u item()
返回的对象将是一个对象数组;数组本身不支持
.get\u lookupValue()
方法。您需要迭代数组中的元素,并对每个元素调用
.get\u lookupValue()
,以获得所需的值

var valueString = "";
var values = oListItem.get_item('HRTopics');
for(var i in values){
    valueString += values[i].get_lookupValue();
}

我试过了。这是大多数地方提出的建议。我得到这个错误:SCRIPT438:对象不支持属性或方法'get_lookupValue'它是多值查找列吗?如果是这样,调用
.get_item()
将返回一个对象数组,而不是单个对象。数组本身不支持
get\u lookupValue()
方法,但是在数组中的每个元素上,您都可以正常调用
.get\u lookupValue()
。我想HRTopics的加载循环是在从数组中提取数据吗?我看到一些东西说获取字段值??不确定它是否可以用于查找?答案实际上是迭代数组!