使用 CSOM 将查找列添加到列表
Adding lookup column to list using CSOM
我有一个名为 "Books" 的列表,其中包含 'Name'、'AuthorName'、'ISBN' 列,类型为文本。现在我有另一个名为 "BillTokenStore" 的列表,我想在 "BillTokenStore" 中添加查找列 'AuthorName'。以下是我所做的。
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();
}
当我 运行 此代码时,出现错误 "value does not fall within the expected range sharepoint 2013"。这里有什么问题?提前致谢。
注意:我能够彻底实现同样的事情UI。我还可以通过代码添加其他类型的字段,例如选择、布尔值和所有字段。
您需要显式加载列表和该列表的字段。
此外,我们需要传递查找列列表的 GUID。
请尝试以下修改后的代码:
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();
}
我有一个名为 "Books" 的列表,其中包含 'Name'、'AuthorName'、'ISBN' 列,类型为文本。现在我有另一个名为 "BillTokenStore" 的列表,我想在 "BillTokenStore" 中添加查找列 'AuthorName'。以下是我所做的。
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();
}
当我 运行 此代码时,出现错误 "value does not fall within the expected range sharepoint 2013"。这里有什么问题?提前致谢。
注意:我能够彻底实现同样的事情UI。我还可以通过代码添加其他类型的字段,例如选择、布尔值和所有字段。
您需要显式加载列表和该列表的字段。
此外,我们需要传递查找列列表的 GUID。
请尝试以下修改后的代码:
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();
}