2016-06-03 12 views
0

Ich bin neu bei Sharepoint und derzeit möchte ich eine Funktion schreiben, wo ich Daten lesen und auf SharePoint-Seiten schreiben kann. Dies ist die Struktur der URL ist, ich will Daten lesen und schreiben verbinden: https://mycompany.sharepoint.com/sites/SubSite/SubSite1/SitePages/Home.aspx
Dann öffne ich die Verbindung zu ihm durch die Verwendung:
Lesen und Schreiben von Daten auf SharePoint Site Pages

ClientContext clientContext = new ClientContext("https://mycompany.sharepoint.com/sites/SubSite/SubSite1/"); 
clientContext.Credentials = new SharePointOnlineCredentials("[email protected]", password); 

I SecureString für das Passwort
Dann nutzen Sie, ich Last-Site-Seiten in einer Liste und lesen zu untersuchen jedes Feld:

List colList = clientContext.Web.Lists.GetByTitle("Site Pages"); 
FieldCollection colfield = colList.Fields; 
IEnumerable<Microsoft.SharePoint.Client.List> resultCollection = clientContext.LoadQuery(
     clientContext.Web.Lists.Include(
     list => list.Title, 
     list => list.Id)); 
clientContext.Load(colList); 
clientContext.Load(colfield); 
clientContext.ExecuteQuery(); 

Dann habe ich Schleife durch jedes Feld
zu untersuchen

for(int i = 1; i <= 4; i++){ 
    ListItem lst = colList.GetItemById(i); 
    foreach (Field field in colfield){ 
     clientContext.Load(field); 
     clientContext.ExecuteQuery(); 
     var val = lst[field.Title]; 
    } 
} 

ich herausgefunden, dass es einige Felder in colList, wie zum Beispiel: Datasource usw. enthält diese Ausnahme:

The property or field has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested 

Meine Frage ist, wie kann ich auf Sharepoint-Site-Seiten richtig anschließen lesen und schreiben Daten in ihnen?

Antwort

0

Du Iterieren durch alle Bereiche der colList aber darunter nur Id & Title Felder in

clientContext.Web.Lists.Include(
     list => list.Title, 
     list => list.Id)); 

Deshalb sollten Sie oben Ausnahme bekommen.

Sie müssen Include alle Felder, die Sie abrufen möchten ODER laden Sie einfach die Liste clientContext.Load(colList); und nichts enthalten, wenn Sie alle Felder abrufen möchten.

Verwandte Themen