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

时间:2010-10-27 12:42:10

标签: sharepoint list view

对于我正在进行的项目,我正在尝试做以下事情。

有一个Sharepoint 2010环境,在Visual Studio中创建了一些自定义列表。我正在使用EventReceiver中FeatureActivated函数中的后台代码向它们添加一些字段。

我正在做的是在Sharepoint List中添加一个查找字段,并设置属性以允许它从我添加到Sharepoint站点的其他列表中查找值。

但是,我找不到将其添加到其中一个视图的函数。我已经尝试修改Schema Xml,但我似乎无法找到一个函数将它重新插入到List中,当使用View中的Xml文件时,我似乎无法使它工作。

是否有一种简单的方法以编程方式向视图添加字段?这对我有帮助,因为似乎没有办法正确地做到这一点。

如果可以解释我的另一个问题,这也可以解决。

我想知道如何在Schema XML文件中创建Lookup字段。我有自定义内容类型和自定义字段,我目前正在尝试在Intermediairs列表中查找Naam字段。 (在部署此解决方案时也会创建此一个)。在搜索Google时,似乎我必须在此处使用名称/列表实例的GUID,但我事先并不知道列表实例的GUID。

  <Field ID="{7CC49D9D-F6F5-4A4A-851F-3152AAAAB158}" Type="Lookup"
     List="Intermediairs" Name="IntermediairLookup" DisplayName="Intermediair"
     StaticName="IntermediairLookup" Group="Onboarding" ShowField="Naam" />

您应该知道此代码似乎有效:

        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中做这样的事情。有谁知道这是怎么做到的吗?还在读这个帖子的人吗?

1 个答案:

答案 0 :(得分:2)