一:首先定义一个函数来创建内容类型,代码如下:
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) { }
六:部署成功后,如下图:
发表评论
-
Sharepoint之升级篇
2008-03-07 07:47 1589一:sharepoint介绍<?xml:namespac ... -
SharePoint之定义管理路径
2008-03-12 07:14 1069一:如何设置 通过定义管理路径,可以指定 Web 应用程序 ... -
Sharepiont之页面模型
2008-03-15 17:33 1060本文主要包括以下几方面内容:1.页面布局和母版页2.页面布局模 ... -
Sharepoint站点把我的名字显示成“系统帐户”问题
2008-03-18 21:48 974在你安装了SharePoint Server 2007之后,当 ... -
MOSS中对列表的一些操作(创建,查询等)
2008-06-17 20:47 8951.查询列表的所有字段 SPSite site = new S ... -
微软发布WSS3.0和MOSS2007 基础结构更新
2008-07-17 07:07 720一:Windows SharePoint Services 3 ... -
[翻译]Training Site Template—Part 1:介绍
2008-07-30 20:08 692原文地址:http://blogs.msdn.com/shar ... -
MOSS中的计时器作业
2008-11-05 20:23 882这方面的文章园子里有几篇了,不过大家基本上都是参考了http: ... -
如何取到MOSS列表中item的链接
2008-12-04 18:07 819SPListItem的Url属性返回的不是绝对路径,形式如下面 ... -
MOSS程序中如何发Mail?
2008-12-09 10:42 781我们使用.NET类库中的API发Mail的时候,我们要配置他的 ...
相关推荐
### AE对象模型详解 在深入探讨AE对象模型之前,我们首先需要理解对象...AE对象模型是理解和操作After Effects内部工作原理的关键,通过对上述概念的理解,开发者能够更加熟练地使用AE进行复杂效果的制作与脚本编写。
### 深度探索C++对象模型:理解与解析 #### C++对象模型概览 C++对象模型是C++编程语言中一个核心且复杂的概念,它定义了如何在内存中表示类、对象以及它们之间的关系。理解C++对象模型对于深入掌握C++语言特性、...
在本文中,我们将深入探讨如何使用PowerDesigner创建面向对象模型。 1. **新建数据模型**: 在PowerDesigner中创建新的数据模型是开始设计的第一步。这涉及到启动程序,然后选择“新建”以创建一个新的模型文件,...
总的来说,《深度探索C++对象模型》是一本深入解析C++核心机制的权威之作,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过阅读和实践书中的例子,你将能更好地掌握C++的本质,从而在实际项目中编写出...
这本书的目标是帮助读者理解C++对象模型背后的细节,包括内存管理、类型系统、对象生命周期、继承、多态等核心概念。 C++对象模型是C++编程的基础,它描述了如何在内存中表示类和对象,以及它们之间的关系。首先,...
但在大体上,可以确定文档内容是在介绍ArcGIS软件中的ArcObjects和ArcGIS Engine的具体对象模型,以及如何通过这些模型来实现GIS软件的定制开发和功能扩展。对于GIS开发者而言,这些内容都是宝贵的技术资源,值得...
10. **C++11及以后的更新**:自C++11开始,语言引入了许多新的特性,如右值引用、lambda表达式、auto关键字、类型推断、强类型枚举等,这些都极大地丰富了C++的对象模型。 通过《深度探索C++对象模型》这本书,读者...
### JavaScript对象模型与执行模型详解 #### 一、引言 JavaScript作为一种强大的脚本语言,在Web开发领域占据了举足轻重的地位。其独特的对象模型和执行模型为开发者提供了灵活多变的功能,使得JavaScript能够轻松...
QTP的自动化对象模型还支持“对象重用”,通过创建对象仓库(Object Repository),可以存储和复用对象,减少脚本维护的工作量。同时,QTP支持“数据驱动测试”,允许测试脚本从外部数据源(如Excel表格)获取输入...
在对象模型中,每个类都有一个对应的类型信息,这些信息在编译时创建并储存在编译生成的代码中。 在C++中,对象是由数据成员和成员函数组成的。数据成员存储在对象的内存空间中,而成员函数通常不直接存储在对象内...
通过对这些内容的深入讲解,读者将能够掌握C++对象模型的本质和运作方式,从而在软件组件设计和应用方面取得更深入的理解。 本书的核心价值在于,它不仅为有经验的C++程序员提供了关于语言内部行为的深入见解,还为...
对象模型包括对象的生命周期、成员变量的布局、虚函数表、构造与析构过程、静态成员等内容。理解这一模型有助于优化代码,提高效率,避免内存管理和多线程问题。 2. **类与对象**:类是C++中的蓝图,定义了一组属性...
在STK中,你可以通过以下方式创建对象模型: 1. 内置几何形状:STK提供了基础的几何形状,如球体、立方体、圆柱体等,可以直接创建并调整尺寸以表示不同类型的航天器或地面设施。 2. 导入3D模型:如果你有更复杂的...
ArcGIS Engine的对象模型是GIS二次开发的基础,它通过CoClass、接口、类和关系类型构建了一个复杂的系统。理解这些概念对于有效地使用ArcGIS Engine进行开发至关重要。通过掌握对象模型的细节,开发者可以更好地设计...
本文旨在深入解析JavaScript对象模型的关键概念,包括基本数据类型、对象、函数及其内部实现原理。 #### 二、基本数据类型 在JavaScript中,基本数据类型是最底层的实现形式。主要包括以下几种: - **Undefined**...
在ArcEngine对象模型中,`CoClass`扮演着核心角色,它们是直接创建的对象,如地图文档、图层、要素类等。 ### InterfaceD 和 InterfaceB 这些提到的接口可能是特定于ArcEngine对象模型的接口,用于定义某些行为或...
VBScript文档对象模型(DOM)是Web开发中的一个重要概念,特别是在使用VBScript进行客户端脚本编程时。DOM是一个标准,允许编程语言与HTML、XML等结构化文档进行交互,为这些文档提供了一种统一的、独立于平台和语言...
基于文本对象模型的自动化网页内容提取方法是一种通过使用文档对象模型(DOM)技术,对原始网页的DOM结构进行优化和分析,进而实现自动化提取网页中有用内容的技术。该方法在信息检索、文本分析和网络资源数据处理...
最后,C++11及其后续标准引入了许多新特性,如右值引用、lambda表达式、类型推断(auto关键字)、move语义等,这些都对C++的对象模型产生了深远影响,提升了程序的效率和可读性。 总的来说,《深度探索C++对象模型...
在Outlook对象模型中,我们可以利用STO来动态地创建和操作对象,例如,如果我们不知道具体的邮件项类型,但需要处理,可以这样操作: ```csharp Type mailItemType = Type.GetTypeFromProgID("Outlook.MailItem"); ...