2015-10-21 7 views
0

Я искал всюду для решения этой проблемы и оказался коротким. Если бы кто-нибудь мог сказать мне трюк, я был бы умен.Получите SharePoint ClientContext через CSOM/JSOM в SharePoint Online Add-in

Сфера применения: Я создаю надстройку SharePoint для SharePoint Online. В приложении я пытаюсь использовать веб-часть, чтобы получить ClientContext ListItem через CSOM или JSOM. Я не могу использовать решение для песочницы.

Основная цель: Мне нужен ClientContext, поэтому я могу получить тело ListItem, использовать GetBytes и сказать, что zip или UTF8 кодируют тело. Мне также нужно использовать SP.ListOperation.Selected.getSelectedItems (clientContext), чтобы выбрать несколько элементов ListItems, которые были выбраны пользователем.

Пример кода (не полный):

<script> 
     SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady); 

     function helloWorldTest() { 
      alert("Function helloWorldTest Active"); 
      var listURL = '/sites/dev/'; 
      var clientContext = new SP.ClientContext(listURL); 
      var olist = clientContext.get_web().get_lists().getByTitle('Secure List') 

      var currentLib = web.get_lists().getById(currentlibid); //Gets the current Library 
      var selectedItems = SP.ListOperation.Selection.getSelectedItems(clientContext); 
      for (var i in selectedItems) { 
       var currentItem = currentLib.getItemById(selectedItems[i].id); 
       context.load(currentItem); 
       for (i in items) { 
        selItems += '|' + selectedItems[i].id; 
       } 


      } 
     } 


       /* 
       var itemCreateInfo = new SP.ListItemCreationInformation(); 
       this.oListItem = oList.addItem(itemCreateInfo); 

       oListItem.set_item('Title', 'Test'); 
       oListItem.set_item('Body', 'Hello World!'); 

       oListItem.update(); 

       clientContext.load(oListItem); 

       clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); 
       alert("fuction complete"); 
      } 

      function onQuerySucceeded() { 

       alert('Item created: ' + oListItem.get_id()); 
      } 

      function onQueryFailed(sender, args) { 

       alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); 
      } 
     } 
     */ 
    </script> 

Я был бы очень признателен за помощь. Спасибо.

ответ

0

Если вы пытаетесь получить контекст клиента для текущего сайта, то вы можете просто использовать:

SP.ClientContext.get_current() 

Если вы пытаетесь построить контекст клиента для достижения в принимающей сеть из приложения сети, то вам нужно использовать полный URL-адрес хост-сети. В приведенном выше коде это выглядит, как вы строите контекст клиента, как это:

var listURL = '/sites/dev/'; 
var clientContext = new SP.ClientContext(listURL); 

Это относительный URL и не будет работать при создании контекста клиента. Обычно URL-адрес веб-хоста доступен как параметр строки запроса с именем SPHostUrl, поэтому вам, возможно, придется его оттуда схватить. И знайте, что это должен быть URL-адрес только на сайте, например. http://server/sites/dev/ и не что-то вроде http://server/sites/dev/default.aspx или другой URL-адрес ресурса на сайте.

 Смежные вопросы

  • Нет связанных вопросов^_^