2017-01-25 19 views
1

Кажется, у меня есть небольшая проблема с получением значения, которое нужно вернуть из раскрывающегося окна поиска. У меня есть следующий код, который получает меня значение из списка Я делаю поиск по:SharePoint работает с выпадающими списками поиска и получает значения

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()); 
     } 
    ); 
} 

Он выполняет этот штраф, давая мне значения выпадающих. Затем он вызывает функцию selectTemp с параметрами tempNumTitle, которые мы ищем, и список извлекаемых значений. Вот следующая функция:

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()); 
     } 
    ); 
} 

Это почти заставляет меня то, что я ищу, но я получаю что-то вроде этого: температура: {$ 1E_1: 3, $ 2e_1: "Temp 3"}

Где я хочу значение $ 2e_1 или "Temp 3". Как я могу получить это значение, не просто переходя темп ["$ 2e_1"]?

ответ

0

При доступе к столбцу поиска или столбцу выбора людей значение столбца является сложным типом, а не простой строкой.

Вы можете вызвать .get_lookupValue() на возвращенном объекте, чтобы получить текстовое представление значения в столбце подстановок, либо .get_lookupId(), чтобы получить идентификационный номер соответствующего пункта в списке поиска (или в списке информации о пользователе семейства веб-сайтов в случае сборщика людей).

Так что в вашем случае, если предположить, «Temp0» это внутреннее имя столбца поиска, вы должны быть в состоянии сделать это:

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

Большое спасибо. Это и есть. Я просто не знал о .get_lookup __(); рутина или не выглядела достаточно сложно. Ты замечательный! –