`

使用对象模型来创建内容类型

Web 
阅读更多

一:首先定义一个函数来创建内容类型,代码如下:

private SPContentType CreateContentType(SPWeb web, string typeName,string baseTypeName,
string description) { SPContentType contentType = null; try { SPContentType baseType; if (string.IsNullOrEmpty(baseTypeName)) { baseType = web.AvailableContentTypes[SPContentTypeId.Empty]; } else { baseType = web.AvailableContentTypes[baseTypeName]; } contentType = new SPContentType(baseType, web.ContentTypes, typeName); contentType.Description = description; web.ContentTypes.Add(contentType); } catch { } return contentType; }

二:定义两个重载的函数,在函数中先创建网站的field,然后再往内容类型中添加FieldLink

 private SPField AddField(SPContentType contentType, string fieldDisplayName, 
SPFieldType fieldType, bool bRequired) { SPField field = null; try { using (SPWeb web = contentType.ParentWeb) { web.Fields.Add(fieldDisplayName, fieldType, bRequired); field = web.Fields[fieldDisplayName]; contentType.FieldLinks.Add(new SPFieldLink(field)); } } catch { } return field; } private SPField AddField(SPContentType contentType, string fieldDisplayName, SPFieldType fieldType, bool bRequired, bool bCompactName, StringCollection choices) { SPField field = null; try { using (SPWeb web = contentType.ParentWeb) { web.Fields.Add(fieldDisplayName, fieldType, bRequired, bCompactName, choices); field = web.Fields[fieldDisplayName]; // add a field link to the content type contentType.FieldLinks.Add(new SPFieldLink(field)); } } catch { } return field; }

三:下面函数完成向指定网站中添加内容类型的功能

 private void AddContentType(SPWeb web)
{
   if (web != null)
   {
       web.AllowUnsafeUpdates = true;
       SPContentType contentType = CreateContentType(web, "OnlineEvent11", "Event", "OnlineEvent11");
       if (contentType != null)
       {
           StringCollection statusColl = new StringCollection();
           statusColl.Add("Approved");
           statusColl.Add("Rejected");
           AddField(contentType, "Event Status", SPFieldType.Choice,true, false, statusColl);

           AddField(contentType, "Number Of Attendees",SPFieldType.Number, false);

           StringCollection eventType = new StringCollection();
           eventType.Add("Business/Career");
           eventType.Add("Classes & Lectures");
           eventType.Add("Dinners/Galas");
           eventType.Add("Fundraiser");
           eventType.Add("Misc");
           eventType.Add("Seminars");
eventType.Add("Support Groups"); AddField(contentType, "Type Of Event", SPFieldType.Choice,true, false, eventType);
StringCollection audienceType = new StringCollection(); audienceType.Add("Adults"); audienceType.Add("Everyones' Invited"); audienceType.Add("Families"); audienceType.Add("Kids"); audienceType.Add("Men"); audienceType.Add("Seniors"); audienceType.Add("Singles"); audienceType.Add("Teens"); audienceType.Add("Women"); AddField(contentType, "Audience Type", SPFieldType.MultiChoice, true, false, audienceType); contentType.Update(true); } } }

四:.如下代码在feature被激活的时候执行

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
   if (properties != null)
   {
      SPWeb web = properties.Feature.Parent as SPWeb;
      if (web != null)
      {
          AddContentType(web);
      }
   }
 }

五:由于SPFeatureReceiver是抽象类,所以下面方法也要被重写

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{ }
public override void FeatureInstalled(SPFeatureReceiverProperties properties)
{ }
public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
{ }

六:部署成功后,如下图:

CreateContenttypeByAPI1

分享到:
评论

相关推荐

    AE对象模型

    ### AE对象模型详解 在深入探讨AE对象模型之前,我们首先需要理解对象...AE对象模型是理解和操作After Effects内部工作原理的关键,通过对上述概念的理解,开发者能够更加熟练地使用AE进行复杂效果的制作与脚本编写。

    深度探索C++对象模型.pdf

    ### 深度探索C++对象模型:理解与解析 #### C++对象模型概览 C++对象模型是C++编程语言中一个核心且复杂的概念,它定义了如何在内存中表示类、对象以及它们之间的关系。理解C++对象模型对于深入掌握C++语言特性、...

    使用PowerDesigner创建面向对象模型7-sun,com[整理].pdf

    在本文中,我们将深入探讨如何使用PowerDesigner创建面向对象模型。 1. **新建数据模型**: 在PowerDesigner中创建新的数据模型是开始设计的第一步。这涉及到启动程序,然后选择“新建”以创建一个新的模型文件,...

    深度探索C++对象模型 PDF

    总的来说,《深度探索C++对象模型》是一本深入解析C++核心机制的权威之作,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过阅读和实践书中的例子,你将能更好地掌握C++的本质,从而在实际项目中编写出...

    深度探索c++对象模型(2012版本)

    这本书的目标是帮助读者理解C++对象模型背后的细节,包括内存管理、类型系统、对象生命周期、继承、多态等核心概念。 C++对象模型是C++编程的基础,它描述了如何在内存中表示类和对象,以及它们之间的关系。首先,...

    ARCGIS桌面对象模型(AO AE 对象模型图 英文).pdf

    但在大体上,可以确定文档内容是在介绍ArcGIS软件中的ArcObjects和ArcGIS Engine的具体对象模型,以及如何通过这些模型来实现GIS软件的定制开发和功能扩展。对于GIS开发者而言,这些内容都是宝贵的技术资源,值得...

    深度探索C++对象模型 PDF中文清晰版

    10. **C++11及以后的更新**:自C++11开始,语言引入了许多新的特性,如右值引用、lambda表达式、auto关键字、类型推断、强类型枚举等,这些都极大地丰富了C++的对象模型。 通过《深度探索C++对象模型》这本书,读者...

    JavaScript 对象模型-执行模型

    ### JavaScript对象模型与执行模型详解 #### 一、引言 JavaScript作为一种强大的脚本语言,在Web开发领域占据了举足轻重的地位。其独特的对象模型和执行模型为开发者提供了灵活多变的功能,使得JavaScript能够轻松...

    QTP自动化对象模型参考

    QTP的自动化对象模型还支持“对象重用”,通过创建对象仓库(Object Repository),可以存储和复用对象,减少脚本维护的工作量。同时,QTP支持“数据驱动测试”,允许测试脚本从外部数据源(如Excel表格)获取输入...

    侯捷讲座:C++对象模型(PDF高清).rar

    在对象模型中,每个类都有一个对应的类型信息,这些信息在编译时创建并储存在编译生成的代码中。 在C++中,对象是由数据成员和成员函数组成的。数据成员存储在对象的内存空间中,而成员函数通常不直接存储在对象内...

    C++对象模型.pdf

    通过对这些内容的深入讲解,读者将能够掌握C++对象模型的本质和运作方式,从而在软件组件设计和应用方面取得更深入的理解。 本书的核心价值在于,它不仅为有经验的C++程序员提供了关于语言内部行为的深入见解,还为...

    深入探索c++对象模型

    对象模型包括对象的生命周期、成员变量的布局、虚函数表、构造与析构过程、静态成员等内容。理解这一模型有助于优化代码,提高效率,避免内存管理和多线程问题。 2. **类与对象**:类是C++中的蓝图,定义了一组属性...

    STK中对象模型(卫星等)的生成与转换方法

    在STK中,你可以通过以下方式创建对象模型: 1. 内置几何形状:STK提供了基础的几何形状,如球体、立方体、圆柱体等,可以直接创建并调整尺寸以表示不同类型的航天器或地面设施。 2. 导入3D模型:如果你有更复杂的...

    ArcGIS+Engine对象模型图+阅读指南

    ArcGIS Engine的对象模型是GIS二次开发的基础,它通过CoClass、接口、类和关系类型构建了一个复杂的系统。理解这些概念对于有效地使用ArcGIS Engine进行开发至关重要。通过掌握对象模型的细节,开发者可以更好地设计...

    JavaScript对象模型

    本文旨在深入解析JavaScript对象模型的关键概念,包括基本数据类型、对象、函数及其内部实现原理。 #### 二、基本数据类型 在JavaScript中,基本数据类型是最底层的实现形式。主要包括以下几种: - **Undefined**...

    ArcEngine对象模型

    在ArcEngine对象模型中,`CoClass`扮演着核心角色,它们是直接创建的对象,如地图文档、图层、要素类等。 ### InterfaceD 和 InterfaceB 这些提到的接口可能是特定于ArcEngine对象模型的接口,用于定义某些行为或...

    VBSCRIPT文档对象模型

    VBScript文档对象模型(DOM)是Web开发中的一个重要概念,特别是在使用VBScript进行客户端脚本编程时。DOM是一个标准,允许编程语言与HTML、XML等结构化文档进行交互,为这些文档提供了一种统一的、独立于平台和语言...

    基于文本对象模型的自动化网页内容提取方法.pdf

    基于文本对象模型的自动化网页内容提取方法是一种通过使用文档对象模型(DOM)技术,对原始网页的DOM结构进行优化和分析,进而实现自动化提取网页中有用内容的技术。该方法在信息检索、文本分析和网络资源数据处理...

    深度探索C++对象模型

    最后,C++11及其后续标准引入了许多新特性,如右值引用、lambda表达式、类型推断(auto关键字)、move语义等,这些都对C++的对象模型产生了深远影响,提升了程序的效率和可读性。 总的来说,《深度探索C++对象模型...

    STO之利用Outlook对象模型自定义Outlook.

    在Outlook对象模型中,我们可以利用STO来动态地创建和操作对象,例如,如果我们不知道具体的邮件项类型,但需要处理,可以这样操作: ```csharp Type mailItemType = Type.GetTypeFromProgID("Outlook.MailItem"); ...

Global site tag (gtag.js) - Google Analytics