以编程方式将列添加到Sharepoint列表视图

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