2017-11-13 2 views
0

Ich erstelle eine Websitesammlungsspalte, die selbst nach einer Liste in dieser Websitesammlung sucht. Ich schaffe diese Spalte CSOM:Die Suche nach einer Spalte in der Websitesammlung enthält keine Inhalte.

string contextUrl = "http://company.example.com/sites/mysite/subsite"; 

    SharePointContext spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext.Current); 
    ClientContext clientContext = new ClientContext(contextUrl); 
    Web web = clientContext.Web; 
    clientContext.Load(web); 
    clientContext.ExecuteQuery(); 

    Web rootWeb = clientContext.Site.RootWeb; 
    clientContext.Load(rootWeb); 

    // Add List containing target column 
    ListCreationInformation targetListInfo = new ListCreationInformation(); 
    targetListInfo.Title = "TargetListTitle"; 
    targetListInfo.TemplateType = (int)ListTemplateType.GenericList; 

    List targetList = web.Lists.Add(targetListInfo);   
    targetList.Update(); 
    clientContext.Load(targetList); 
    clientContext.ExecuteQuery(); 


    // Update Title 
    FieldCollection techListFields = targetList.Fields; 
    clientContext.Load(techListFields); 
    clientContext.ExecuteQuery(); 

    // Create Site Lookupcolumns 
    var techListID = targetList.Id; 

    FieldCollection colSCFields = rootWeb.Fields; 
    clientContext.Load(colSCFields); 
    clientContext.ExecuteQuery(); 

    var lookupSchema = "<Field Type='Lookup' DisplayName='Magic' Required='FALSE' List='" + techListID + "' ShowField='Title' StaticName='Magic' Name='Magic'/>"; 
    colSCFields.AddFieldAsXml(lookupSchema, false, AddFieldOptions.AddFieldInternalNameHint); 

    clientContext.ExecuteQuery(); 

(für alle Informationen habe ich alle Linien, aber der entscheidende Teil beginnen unter "// Create Site Lookupcolumns")

Die Site-Spalte erstellt wird, aber wenn ich einen Nachschlag auf das verwenden Spalte in einer Liste innerhalb einer Untersite (manuell oder nach Programm) Das Dropdown-Feld dieses Nachschlagefelds zeigt keinen Inhalt an. (Das Verhalten sieht aus wie eine Nachschlagespalte erstellt wird, bevor die Zielspalte vorhanden)

Antwort

1

Sie benötigen webid Attributwert angeben (setzen Sie ihn ID Unterseite) im Bereich XML-Definition, wie folgt aus:

var lookupSchema = "<Field Type='Lookup' DisplayName='Magic' Required='FALSE' WebId='" + web.Id + "' List='" + techListID + "' ShowField='Title' StaticName='Magic' Name='Magic'/>"; 
Verwandte Themen