2017-03-13 7 views
0

私は上記の質問について多くの情報を見てきましたが、それまでの回答には答えていませんでした。多数の検索フィールドを持つリスト項目を取得しようとしています。私は検索値のいくつかに成功しましたが、他のものは得られませんでした。理由を理解できません。また、返されたデータに「null」の項目は受け入れられないようです。ルックアップフィールドに値が含まれていないと、エラーがスローされますか?これは正しいです?以下は私のコードです。他の問題(私のタイトルで言及されている大きな問題)は、IDまたはタイトル以外のものを引き出すためのルックアップ値がエラーをスローします。参照が見つからないか、初期化されています。この例では、私のルックアップフィールドは、1行のテキストとして返されるcalcカラムを参照しています。したがって、私の参照フィールドはCourse1Date/DateRangeです。ここで、DateRangeはcalc列のフィールド名を表します。エラー:「プロパティまたはフィールドが初期化されていません。要求されていないか、要求が実行されていません。明示的に要求する必要があります。あなたがルックアップ値を取得するためにフィールドを初期化していLookupValues、JavaScript Javascript SharePoint 2013を検索していない

function getLookupValues(){ 
 
    var clientContext = SP.ClientContext.get_current(); 
 
    var list = clientContext.get_web().get_lists().getByTitle('Lookup'); 
 
    var caml = new SP.CamlQuery(); 
 
    caml.set_viewXml('<View><Query><Where><Geq>' + 
 
       '<FieldRef Name=\'ID\'/><Value Type=\'Number\'>82</Value>' + 
 
       '</Geq></Where></Query><RowLimit>10</RowLimit></View>'); 
 

 
    var returnedItems = list.getItems(caml); 
 
    clientContext.load(returnedItems); 
 
    clientContext.executeQueryAsync(success, failure); 
 
    } 
 
    function success(){ 
 
    var listiteminfo=''; 
 
    var enumerator = returnedItems.getEnumerator(); 
 
    while(enumerator.moveNext()) 
 
    { 
 
     var listItem = enumerator.get_current(); 
 
     if(listItem.get_item('Course1')) { 
 
     var course1 = listItem.get_item('Course1').get_lookupValue(); 
 
     } 
 
     if(listItem.get_item('Course2')) { 
 
     var course2 = listItem.get_item('Course2').get_lookupValue(); 
 
     } 
 
     if(listItem.get_item('Course1Date')) { 
 
     var course1Date = listItem.get_item('Course1Date').get_lookupValue(); 
 
     } //throws error for this lookup field 
 

 
    listiteminfo += '\nCourse1: '+course1+'\nCourse2: '+course2+'\nCourse1Date: '+course1Date; 
 

 
    } 
 
    alert(listiteminfo); 
 
      } 
 
    function failure(){ 
 
    alert("Failed"); 
 
    }

答えて

0

。コンテキストでListItemをロードする必要があります。また、ルックアップフィールドにnull値がある場合、get.lookupValue()は例外をスローします。フィールド値がルックアップ値を取得する前にnullでないことを確認してください。下記の回避策を試してください。

function getLookupValues() { 
     var clientContext = SP.ClientContext.get_current(); 
     var list = clientContext.get_web().get_lists().getByTitle('Lookup'); 
     targetListItem = list.getItemById(82); 
     clientContext.load(targetListItem, 'Title'); 
     clientContext.load(targetListItem, 'Course1'); 
     clientContext.load(targetListItem, 'Course1Date'); 
     clientContext.load(targetListItem, 'Course2'); 
     clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
    } 
    function onQuerySucceeded() { 
     var resultData = ""; 
     resultData += targetListItem.get_item('Title'); 
     if (targetListItem.get_item('Course1') != null) 
      resultData += targetListItem.get_item('Course1').get_lookupValue(); 
     if (targetListItem.get_item('Course1Date') != null) 
      resultData += targetListItem.get_item('Course1Date').get_lookupValue(); 
     if (targetListItem.get_item('Course2') != null) 
      resultData += targetListItem.get_item('Course2').get_lookupValue(); 
     alert(resultData); 
    } 
    function onQueryFailed(sender, args) { 
     alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace()); 
    } 
+0

こんにちはNaveen、応答ありがとうございます。クエリ内のすべてのルックアップフィールドの値を引いて、ヌル値を含むフィールドの値を引く方法はありますか? – JackSki

+0

おそらく私のクエリを82以上に変更する必要があります。コードが "Geq"に更新されました82 – JackSki

+0

上記でテストされていますが動作しません。それは1つの項目を行うが、いくつかではない場合にのみ機能します。 – JackSki

関連する問題