2017-09-05 2 views
0

Ich habe eine Liste namens "Bücher" mit den Spalten 'Name', 'Autorenname', 'ISBN' mit Typ als Text. Jetzt habe ich eine andere Liste namens "BillTokenStore" und ich möchte die Nachschlagespalte "AuthorName" in "BillTokenStore" hinzufügen. Unten ist was ich getan habe.Hinzufügen von Nachschlagespalte zur Liste mit CSOM

using (ClientContext context = new ClientContext(webFullUrl: siteUrl)) 
      { 
       context.Credentials = new SharePointOnlineCredentials(userName, GetPassWord()); 

       Web web = context.Web; 

       ListCollection listCollection = web.Lists; 
       List list = listCollection.GetByTitle("BillTokenStore"); 


       string schemaLookupField = @"<Field Type='Lookup' Name='InStock' StaticName='InStock' DisplayName='InStock' List = 'Books' ShowField = 'Title' /> "; 
       Field lookupField = list.Fields.AddFieldAsXml(schemaLookupField, true, AddFieldOptions.DefaultValue); 

       context.ExecuteQuery();    
      } 

Wenn ich diesen Code ausführen, erhalte ich die Fehlermeldung „Wert innerhalb des erwarteten Bereichs Sharepoint nicht 2013 fallen“. Was ist hier falsch? Danke im Voraus.

Hinweis: Ich bin in der Lage, dieselbe gründliche UI zu erreichen. Ich bin auch in der Lage, andere Arten von Feldern wie Auswahl, Boolean und alle durch Code hinzuzufügen.

Antwort

1

Sie müssen die Liste und die Felder dieser Liste explizit laden.

Auch müssen wir die GUID der Nachschlagespaltenliste übergeben.

Bitte versuchen Sie die folgenden geänderten Code:

using (ClientContext context = new ClientContext(webFullUrl: siteUrl)) 
{ 
    context.Credentials = new SharePointOnlineCredentials(userName, GetPassWord()); 

    Web web = context.Web; 

    List booksList = context.Web.Lists.GetByTitle("Books"); 

    List list = context.Web.Lists.GetByTitle("BillTokenStore"); 

    context.Load(list, l => l.Fields); 
    context.Load(booksList, b => b.Id); 
    context.ExecuteQuery(); 

    string schemaLookupField = @"<Field Type='Lookup' Name='InStock' StaticName='InStock' DisplayName='InStock' List='"+ booksList.Id +"' ShowField = 'Title' />"; 
    Field lookupField = list.Fields.AddFieldAsXml(schemaLookupField, true, AddFieldOptions.DefaultValue); 
    lookupField.Update(); 

    context.Load(lookupField); 
    context.ExecuteQuery();  
} 
+0

Dank Gautam. Nachdem die Guid bereitgestellt wurde, funktionierte es. – Parashuram

Verwandte Themen