Sharepoint网站栏开发

基于Feature的网站栏开发

1、在建好的VS Sharepoint项目中添加一个Feature

2、继续添加一个空的Element元素

//Element元素代码
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Field ID="{96A36D95-0A5F-49F4-86CE-1411E95E137E}"
          Name="栏内部名称"
          DisplayName="栏显示名称"
          Group="组名称"
          Type="Field种类"
          Required="是否为必填"
         >
  </Field>
  //可添加多个类似的Field
</Elements>

3、部署VS项目

4、在部署的网站中,进入网站设置,网站栏选项,查看是否部署成功

在基于Feature的站点列开发避免了可移植性问题和同步化问题。

基于对象模型的网站栏开发

1、在Sharepoint项目中新建一个Feature

2、与基于Feature的网站栏不同,此时应右键点击新建的Feature,添加新的事件接收器

3、根据实际需要编写代码:

我这里只写了在激活此功能是创建2个作为事例的网站栏,除了编写激活后的代码,还可以编写停用功能、安装功能等事件后的代码

 public class Feature2EventReceiver : SPFeatureReceiver
    {
        // 取消对以下方法的注释,以便处理激活某个功能后引发的事件。

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            using (SPSite site = (SPSite)properties.Feature.Parent)//使用properties来获取SPSITE是因为系统管理员有可能在没有上下文的环境中操作功能
            {
                using (SPWeb web = site.RootWeb)
                {
                    try
                    {
                        string benefitsDescription = web.Fields.Add("Benefits_Description",SPFieldType.Note,false);
                        string benefitsYear = web.Fields.Add("Benefits_Year",SPFieldType.DateTime,false);
                        web.Update();

                        SPField benefitD = web.Fields[benefitsDescription];
                        benefitD.Title = "Box";
                        benefitD.Description = "Description";
                        benefitD.Group = "Demo";
                        benefitD.Update();

                        benefitD = web.Fields[benefitsYear];
                        benefitD.Title = "BOXTIME";
                        benefitD.Description = "Description";
                        benefitD.Group = "Demo";
                        benefitD.Update();
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex.ToString());
                    }
                }
            }
        }


        // 取消对以下方法的注释,以便处理在停用某个功能前引发的事件。

        //public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        //{
        //}


        // 取消对以下方法的注释,以便处理在安装某个功能后引发的事件。

        //public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        //{
        //}


        // 取消对以下方法的注释,以便处理在卸载某个功能前引发的事件。

        //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        //{
        //}

        // 取消对以下方法的注释,以便处理在升级某个功能时引发的事件。

        //public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
        //{
        //}
    }

基于对象模型的网站栏更灵活,可以很方便地包含用于对站点集中的列表进行循环访问代码以及用于清除仍然由站点列所使用的现有数据的代码。

原文地址:https://www.cnblogs.com/renzh/p/2697126.html