2016-08-15 4 views
0

Hallo Ich versuche, alle Dokumente Bibliothek nur von den angemeldeten Benutzern erstellt zu bekommen. Mit dem folgenden Code bekomme ich auch Bibliotheken, die nicht von einem Benutzer erstellt wurden. Vielen Dank.SharePoint 2013 erhalten Dokumentbibliothek von Benutzern in JavaScript erstellt

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 />"; 
    } 
} 

Antwort

0

Wenn Sie wissen wollen, wer Liste oder Bibliothek erstellt haben, müssen Sie Eigentum SPList.Author zu bekommen. Wie ich weiß, können Sie es nicht von JSOM bekommen.

Mein Rat für Sie ist, Ihre eigenen http Hanlder mit Logik auf der Serverseite zu entwickeln und es von Ajax anrufen. Beispielsweise übergeben Sie Argumente an Handler wie Web-URL (_spPageContextInfo.webAbsoluteUrl), aktuelle Benutzeranmeldung oder ID (_spPageContextInfo.userId) und in Handlerlisten im Web, vergleichen Sie den aktuellen Benutzer und Listenersteller. Schließlich geben Sie benötigte Listeninformationen zurück.

oder nur Web-Teil entwickeln und das Gleiche tun: iterate-Listen und vergleichen Sie es mit SPContext.Current.Web.CurrentUser

UPDATE:

Beispiel von C# -Code. Sie können es in Ihren Webpart oder Event-Handler einfügen. In diesem Code werden alle Listen auf SPWeb iteriert und Listentitel gespeichert, die vom aktuellen Benutzer erstellt wurden.

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

Vielen Dank für die Antwort. Der Punkt ist, ich bekomme andere Listen, die kein Teil von Benutzern sind. Diese Listen sind in SharePoint Designer nicht einmal sichtbar und ich bin neu in der SharePoint-Welt. – Doro

+0

Also, mein Vorschlag ist es, benutzerdefinierte Web-Part oder http-Handler zu entwickeln, die Listen von aktuellen oder bestimmten Benutzer, die Sie wollen, erstellt zurückgeben. Wenn es Ihr erster Entwicklungsvorgang für SharePoint ist, lesen Sie bitte update in meinem Post und gehen Sie zu msdn für [walkthrough erstellen des Webparts] (https://msdn.microsoft.com/en-us/library/ee231551 (v = vs.120) .aspx). –

1

Da Sie nutzen SharePoint JavaScript API (a.k.a JSOM), ist es ein bisschen schwierig, da SP.List object nicht Author Eigenschaft aussetzt, um zu bestimmen, die diese Aufgabe erstellt. Aber die gute Nachricht, dass Author Eigenschaft von SP.List.schemaXml property extrahiert werden könnte, wie gezeigt, unter

Hier ist ein vollständiges Beispiel, wie Listen von aktuellen Benutzern erstellt abzurufen

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