2016-08-15 4 views
0

Привет Я пытаюсь получить всю библиотеку документов, созданную только зарегистрированными пользователями. Со следующим кодом я получаю также библиотеки, которые не были созданы пользователем. Спасибо.SharePoint 2013 получить библиотеку документов, созданную пользователями в JavaScript

function GetAllLibraries() { 
    var listCollection = lists.getEnumerator(); 
    while (listCollection.moveNext()) { 
     var listName = listCollection.get_current().get_title('Title'); 
     document.getElementById('leftDiv').innerHTML += "<b>" + listName + "<b/>" + "<br />"; 
    } 
} 

ответ

0

Если вы хотите знать, кто создал список или библиотеку, вам нужно получить свойство SPList.Author. Как я знаю, вы не можете получить его JSOM.

Мой совет для вас - разработать свой собственный http-hanlder с логикой на стороне сервера и называть его ajax. Например, вы передаете аргументы в обработчик, как веб-url (_spPageContextInfo.webAbsoluteUrl), текущий пользовательский логин или идентификатор (_spPageContextInfo.userId), а в обработчике итерации списков в Интернете сравниваете текущего пользователя и создателя списка. Наконец, верните необходимые сведения о списках.

Или просто разработать веб-часть и сделать то же самое: списки итерацию и сравнить его с SPContext.Current.Web.CurrentUser

UPDATE:

Пример C# кода. Вы можете поместить его в свою веб-часть или обработчик событий. В этом коде мы перебираем все списки на SPWeb и сохраняем заголовок списка, созданный текущим пользователем.

private void GetLists() 
{ 
    using (SPSite site = new SPSite("{site_url}")) 
    { 
     using (SPWeb web = site.OpenWeb()) 
     { 
      SPListCollection listCol = web.Lists; 
      List<string> currentUserLists = new List<string>(); 
      foreach(SPList list in listCol) 
      { 
       if (list.Author.ID == SPContext.Current.Web.CurrentUser.ID) 
       { 
        currentUserLists.Add(list.Title); 
       } 
      } 
     } 
    } 
} 
+0

Спасибо за ответ. Дело в том, что я получаю другие списки, которые не являются частью каких-либо пользователей. Эти списки даже не видны в SharePoint Designer, и я новичок в мире SharePoint. – Doro

+0

Итак, мое предложение - разработать пользовательскую веб-часть или обработчик http, которые будут возвращать списки, созданные текущим или конкретным пользователем, которого вы хотите. Если это ваш первый пример разработки sharepoint, см. Обновление в моем сообщении и перейдите в msdn для [создания веб-части прохода] (https://msdn.microsoft.com/en-us/library/ee231551 (v = vs.120) .aspx). –

1

Поскольку Вы используете SharePoint JavaScript API (a.k.a JSOM), это немного сложнее, так как SP.List object не выставляет Author свойства, чтобы определить, кто создал этот объект. Но хорошая новость, что Author имущество может быть извлечена из SP.List.schemaXml property, как показано ниже

Вот полный пример, как получить списки, созданные текущим пользователем

var ctx = SP.ClientContext.get_current(); 
var allLists = ctx.get_web().get_lists(); 
var currentUser = ctx.get_web().get_currentUser(); 
ctx.load(allLists,'Include(SchemaXml)'); 
ctx.load(currentUser); 
ctx.executeQueryAsync(
    function(){ 


     var lists = allLists.get_data().filter(function(list){ 
      var listProperties = schemaXml2Json(list.get_schemaXml()); 
      var listAuthorId = parseInt(listProperties.Author); 
      return listAuthorId == currentUser.get_id(); 
     }); 

     console.log("The amount of lists created by current user: " + lists.length);  
    }, 
    logError); 

} 


function schemaXml2Json(schemaXml) 
{ 
    var jsonObject = {}; 
    var schemaXmlDoc = $.parseXML(schemaXml); 
    $(schemaXmlDoc).find('List').each(function() { 
     $.each(this.attributes, function(i, attr){ 
      jsonObject[attr.name] = attr.value; 
     }); 
    }); 
    return jsonObject; 
} 




function logError(sender,args){ 
    console.log(args.get_message()); 
} 

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

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