SP2010开发和VS2010专家"食谱"--第四章节—列表定义和内容类型(2)--拓展现有内容类型

上篇文章中,我们学习了如何创建网站栏。本文中我们使用声明XML创建网站栏,并添加到联系人内容类型。


联系人内容类型提供了在SharePoint中储存联系人的方法。它提供了不同的栏来储存联系人姓名、电话、传真、网页等。它并不提供分类这些联系人的方法。我们将拓展这个内容类型,这样我们可以分类我们的联系人为sales lead、customer或vendor。


Getting ready

你应该成功完成之前的练习。


How to do it

1. 管理员身份打开VS2010IDE。

2. 新建项目,选择.NET Framework框架。

3. 选择内容类型。

4. 命名ContactsContentType,确定。

5. 选择部署为沙盒解决方案,下一步。

6. 确保选择Contact内容类型作为基础内容类型,完成。

7. 添加一个新的空白元素SiteColumns。


8. 在SiteColumns元素下的Elements.xml中,添加xml创建新的网站栏。


9. 我们将在内容类型中引用这个域。在ContentType1下的Elements.xml中,添加域引用。


10. 按下F5运行项目。这将创建内容类型和网站栏。


11. 导航到网站栏,你会看到新网站栏Contact Type在新组Chapter3 Columns下。


How it works

严格的讲,我们开发自定义内容类型时,必须从现有可用的内容类型进行拓展。之前讲过item(0x01)是我们在继承内容类型时走的最深的地方,不能从system内容类型(0x)继承。


ContentType1下的Elements.xml描述了内容类型的架构。它有属性定义姓名、组、描述和版本。ID属性是无任何格式的GUID。内容类型的ID总是带有父内容类型和两个0的前缀。因为我们基于Contact,前缀是0x010600.ID属性提供了内容类型的唯一标识。


Inherits属性指定了所有来自父内容类型的域用在子内容类型中。所以,我们仍有定义在contact内容类型的所有域,但我们也增加了选项栏选择联系人类型。


当feature被部署以后,SharePoint读取xml架构并创建域。我们创建了新网站栏,类型为选项,并提供可选的选项。所有这些信息在XML架构中提供。因为VS中没有特定模板创建网站栏,我们增加新空白元素,并提供架构创建栏。我们不必这样做。你可以在内容类型的Elements.xml中指定域定义。但是有个分开的Elements.xml是个好实践。后面我们将展示如何在内容类型的Elements.xml中包含域定义。


在网站栏架构中,你可以看到GUID的ID属性。工具-创建GUID。


选择注册表格式,复制。这个ID属性在内容类型中引用域时用到。其他属性定义栏目。


There's more

按下列步骤使用创建的内容类型:

1. 创建联系人列表。

2. 从列表设置页,点击“高级设置”,“允许管理内容类型”选择是。

3. 点击内容类型部分下,现有网站内容类型的“添加”链接。

4. 这将添加我们的内容类型到列表。移除掉原来默认的内容类型。

5. 添加新联系人。


Deployment of previous solution

之前的例子展示了网站栏必须先部署这样才能在内容类型中引用。我们需要添加第二个feature到项目,添加内容类型元素并删除第一个feature中的内容类型。创建feature依赖--feature2依靠feature1的部署。确保网站栏在内容类型部署前被部署。

添加feature依赖步骤:

1. 双击Feature2打开feature设计器。点击功能激活依赖项边的+。

2. 点击添加。


3. 选择Feature1,点击添加。

Inherits attribute in content type

上面我们知道,Inherits属性指定所有父内容类型的域在子中使用。如果我们想删除子中一个栏目(在父中可用).确保设置Inherits属性为false,使用RemoveFieldRef元素:


通过添加上面的XML到内容类型的Elements.xml中,我们将从内容类型中删除First Name Phonetic和Last Name Phonetic栏。

See also

1. 创建网站栏

2. 使用对象模型创建自定义内容类型


故障分析

在本机测试时出现错误,提示无效字段名

原因是引用Field的FieldRef方法中参数Name属性是必需的。添加Name=“ContactType”,调试部署成功。
展开阅读全文

Git 实用技巧

11-24
这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值