Programmatically adding columns to Sharepoint List Views
对于我正在从事的项目,我正在尝试执行以下操作。
这里有一个Sharepoint 2010环境,在Visual Studio中创建了一些自定义列表。我使用EventReceiver的FeatureActivated函数中的背景代码向其中添加了一些字段。
我在这里所做的工作是在" Sharepoint列表"中添加一个查找字段,并设置属性以使其能够从我添加到" Sharepoint站点"的其他列表中查找值。
但是,我找不到将其添加到其中一个视图的函数。我曾尝试修改Schema Xml,但似乎找不到将其重新插入到列表中的函数,并且当从View使用Xml文件时,我似乎无法使其正常工作。
有没有一种简便的方法可以以编程方式向视图添加字段?这将对我有帮助,因为似乎无法正确执行此操作。
如果可以解释我的另一个问题,也可以解决。
我想知道如何在Schema XML文件中创建Lookup字段。我有一个"自定义内容类型"和"自定义字段",当前正在尝试在"中介人列表"中查找" Naam"字段。 (在部署此解决方案时也会创建一个)。搜索Google时,似乎我必须在这里使用名称/列表实例的GUID,但我事先不知道列表实例的GUID。
1 2 3 | <Field ID="{7CC49D9D-F6F5-4A4A-851F-3152AAAAB158}" Type="Lookup" List="Intermediairs" Name="IntermediairLookup" DisplayName="Intermediair" StaticName="IntermediairLookup" Group="Onboarding" ShowField="Naam" /> |
您应该知道此代码似乎有效:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | SPWeb web = null; SPSite site = null; if (properties.Feature.Parent is SPWeb) { web = properties.Feature.Parent as SPWeb; site = web.Site; } if (properties.Feature.Parent is SPSite) { site = properties.Feature.Parent as SPSite; web = site.RootWeb; } web.AllowUnsafeUpdates = true; SPList changeList = web.Lists.TryGetList("Onboarding"); SPList sourceList = web.Lists.TryGetList("Intermediairs"); if (changeList != null && sourceList != null) { changeList.Fields.Delete("IntermediairLookup"); var PrimaryColumnStr = changeList.Fields.AddLookup("Intermediair", sourceList.ID, true); var PrimaryColumn = changeList.Fields.GetFieldByInternalName(PrimaryColumnStr) as SPFieldLookup; PrimaryColumn.LookupField = sourceList.Fields["Naam"].InternalName; PrimaryColumn.Update(); } |
但是,是的。我不知道如何以XML格式进行操作。有人有什么想法吗?解决这两个问题中的任何一个都会解决我的核心问题。
问候,
垫子
编辑:好了,这个问题已经回答了,再次感谢!
一件事。我真的很想知道在XML / CAML中如何做这样的事情。有谁知道这是怎么做到的吗?还在读这个线程的人吗?
看看SPView.ViewFields
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.spview.viewfields.aspx