2017-01-25 4 views
1

Ich habe ein wenig Mühe, einen Wert aus einem Drop-Down-Lookup-Feld zurückgegeben werden. Ich habe den folgenden Code bekommt, die mir die Werte aus der Liste bekommt Ich mache den Nachschlag auf:SharePoint arbeiten mit Lookup-Dropdown-Menüs und Werte erhalten

var siteUrl = _spPageContextInfo.webServerRelativeUrl; 

function getDropdownValues(tempNumTitle) { 
    var clientContext = new SP.ClientContext(siteUrl); 
    var tempDropdownValueList = clientContext.get_web().get_lists().getByTitle('Temps'); 

    var camlQuery = new SP.CamlQuery(); 
    camlQuery.set_viewXml('<View>' + 
           '<RowLimit>' + 
            '100' + 
           '</RowLimit>' + 
          '</View>'); 

    this.tempQuery = tempDropdownValueList.getItems(camlQuery); 

    clientContext.load(tempQuery); 
    clientContext.executeQueryAsync(
     // on success of getting Temp Values from dropdown 
     // match it with the tempNum entry 
     function (sender, args) { 
      var tempDropDownValues = {}; 

      var tempEnumerator = tempQuery.getEnumerator(); 

      while(tempEnumerator.moveNext()) { 
       var tempItem = tempEnumerator.get_current(); 
       var tempTitle = tempItem.get_item('Title'); 
       var tempId = tempItem.get_item('ID'); 
       tempDropDownValues[tempTitle] = tempId; 

      } 

      selectTemp(tempNumTitle, tempDropdownValues) 
     }, 
     // on failure 
     function (sender, args) { 
      console.info('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
     } 
    ); 
} 

Sie führt diese in Ordnung, mir die Drop-Down-Werte geben. Es ruft dann die Funktion selectTemp mit den Parametern des tempNumTitle, nach dem wir suchen, und der Liste der abgerufenen Dropdown-Werte auf. Hier ist die nächste Funktion:

function selectTemp(tempNumTitle, tempValues) { 
    var clientContext = new SP.ClientContext(siteUrl); 
    var tempMatchValueList = clientContext.get_web().get_lists().getByTitle('Numbers-Temp'); 

    var camlQuery = new SP.CamlQuery(); 
    camlQuery.set_viewXml('<View>' + 
           '<Query>' + 
            '<Where>' + 
             '<Eq>' + 
              '<FieldRef Name="Title" />' + 
              '<Value Type="Text">' + tempNumTitle + '</Value>' + 
             '</Eq>' + 
            '</Where>' + 
           '</Query>' + 
          '</View>'); 

    this.tempMatchValueQuery = tempMatchValueList.getItems(camlQuery); 

    clientContext.load(tempMatchValueQuery); 
    clientContext.executeQueryAsync(
     // on success 
     function (sender, args) { 
      var temp = ''; 

      tempEnumerator = tempMatchValueQuery.getEnumerator(); 
      while(tempEnumerator.moveNext()) { 
       var tempItem = tempEnumerator.get_current(); 
       temp = tempItem.get_item('Temp0'); 
      } 
     }, 
     // on failure 
     function (sender, args) { 
      console.info('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
     } 
    ); 
} 

Es ist fast bekommt mir, was ich suche, aber ich habe so etwas wie dies: Temp: {$ 1E_1: 3, $ 2e_1: "Temp 3"}

Wo möchte ich den Wert von $ 2e_1 oder "Temp 3". Wie kann ich diesen Wert erhalten, ohne nur temp ["$ 2e_1"]?

Antwort

0

Beim Zugriff auf eine Suchspalte oder eine Personenauswahlspalte ist der Spaltenwert ein komplexer Typ und keine einfache Zeichenfolge.

Sie .get_lookupValue() auf das zurückgegebene Objekt aufrufen kann eine Textdarstellung der Nachschlagespalte Wert zu erhalten, oder .get_lookupId() die ID-Nummer des entsprechenden Elements in der Lookup-Liste (oder in der Websitesammlung Benutzerinformationen Liste in dem Fall zu erhalten einer Personenauswahlspalte).

Also in Ihrem Fall unter der Annahme, „TEMP0“ ist der interne Name eines Nachschlagespalte, sollten Sie in der Lage sein, dies zu tun:

temp = tempItem.get_item('Temp0').get_lookupValue(); 
+0

Ihnen sehr danken. Das tut es. Ich wusste einfach nichts über das .get_lookup __(); Routine oder sah nicht hart genug. Du bist großartig! –

Verwandte Themen