Content Type working with Document Word

本文介绍如何在SharePoint中使用Content Types与Word文档进行集成,通过定义自定义的Content Type和Word模板,实现文档属性的自动填充及同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SharePoint Content Types working with Word

这个文档是按照SharePoint 2010 Development with Visual Stdio 2010 Chapter 7 中的Advanced Content Types一步一步走过来的。
这篇文档主要讲述Content Type是如何和Office Word 文档工作的,这里会向大家展示如何将word文档和Content Type联合在一起使用,如何使用Word Document Panel展示和Content Type绑定的Site column中的内容

Word Document和Content Type

Word有个文档面板功能,这个功能可以用来展示和Word绑定的Content Type里面的内容。在Word里面修改Word Panel里面的值,然后上传到使用该Content Type的list上,那么这些修改的值会反应到该List上的Item上,如果修改的是item上的值,那么下载该文档并打开,这些值就会反应到Word Panel里面。

应用场景:想象一下,公司员工去参加在公司外面举行的会议,或者去参加培训。这样的话,员工会在会议结束或者培训结束后做个回忆总结或者培训总结。公司一般会使用一个标准的Trip Reports 文档库来保存所有的这种类型的Document Libraries.但是他们想使用Content Types 来更新文档库。我们的任务是创建一个拥有一个自定义类型的site Column的Content Type,并将其和Word Template 模板保存起来。为了简便,我们首先使用三个Site Column保存一些额外的信息.
• Conference name(会议名称)
• City where conference was hold(举办地)
• Was this a personal or business trip(会议类型)

什么是Word Panel呢?我是小白,第一次看书是也是没用过这个Word的功能。

  1. 创建Content Type,在VS2010里面创建以Content type为模板,命名为Trip Report(报销单)的项目,基类型选择Document.
  2. 点击项目,新建一个Empty Element,将其命名为TripReportSiteColumns,使用这个Empty Element来自定义列。代码如下所示,这里原文没有Group字段。

    <Field ID="{A63AB6B5-DD15-4FC0-9435-D5497DB37EE4}"
                   Name="ConferenceName" 
                   DisplayName="Conference Name"/>
    <Field ID="{089E0A5D-C228-4F1B-A827-AD5F2EEB1693}"
           Name="ConferenceLocation" 
           DisplayName="Conference Location"/>
    <Field ID="{5EAF72D9-EBD1-4DB9-81F7-80877375F824}"
           Name="TripType" 
           DisplayName="Trip Type">
         <CHOICES>
           <CHOICE>Personal</CHOICE>
           <CHOICE>Business</CHOICE>
         </CHOICES>
    </Field>
  3. 在Content Type里面引用这些Site Columns,Content Type1下的Element.xml中的内容如下:

     <FieldRef ID="{A63AB6B5-DD15-4FC0-9435-D5497DB37EE4}"
               Name="ConferenceName"
               DisplayName="Conference Name"/>
    
     <FieldRef ID="{089E0A5D-C228-4F1B-A827-AD5F2EEB1693}"
               Name="ConferenceLocation"
               DisplayName="Conference Location"/>
    
     <FieldRef ID="{5EAF72D9-EBD1-4DB9-81F7-80877375F824}"
               Name="TripType"
               DisplayName="Trip Type"/>
  4. site Column和Content type分别放到两个feature里面:
    • 右键项目中的feature->add feature->生成feature2,默认的是feature1,Content type放到feature1里面,TripReportSiteColumn放到feature2里面。
    • 右键feature2,Add Event Receive,添加事件。Uncomment FeatrueUninstalling函数。表示当feature2被卸载时,把site column也给卸载了。

    ```
    public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
            {
                SPWeb web = properties.Feature.Parent as SPWeb;
                web.Fields["{A63AB6B5-DD15-4FC0-9435-D5497DB37EE4}"].Delete();
                web.Fields["{089E0A5D-C228-4F1B-A827-AD5F2EEB1693}"].Delete();
                web.Fields["{5EAF72D9-EBD1-4DB9-81F7-80877375F824}"].Delete();
            }
    ```
    
  5. 这样,我们就准备好基本的content type了,我们继续创建一个Word文档为每一个要加入trip report library的文档作一个模板。如下图所示:这里写图片描述
  6. F5,发布项目,可以从Custom Content Types里面看到我们自定义的TripReport-ContentType1,点进去,可以看到TripReport-ContentType1设置信息-〉高级设置(Advance Setting),将刚才定义的Word 文档模板Upload上去。这样的话,我们就给一个Content Type定义了一个Word模板,点击OK.
    这里写图片描述这里写图片描述这里写图片描述

  7. 一个Content type肯定要依赖于一个list,library是特殊类型的list.定义一个使用Trip Report Content type类型的library,命名为Trip Reports,然后将这个新建的library-〉create->library setting ->高级设置(advance setting)->允许管理content type->add from existing site content types
    这里写图片描述这里写图片描述
    本来这里是有两个的,还有一个document content type,点击document ,delete.最后显示如上面这张图。
    这个时候我们就可以去Trip Reports library->library Tools下的document->new Document->这个时候可以看到我们上传的模板,显示如下图所示:
    这里写图片描述
    可以看到,本来这个是没有confernce Name conference location 和trip type这三个属性的,但是我们把新建的文档传上去之后,他就具有了这些文档属性。
    现在我们给这个文档的这些值设置一些值,当然这里我们要首先修改trip reports的视图view
    修改视图(views)方法:
    • 点击libraries里的Trip Reports->Library tool->library->create Viewall document->新建视图 的名称( checkbox make this as default view)把想显示的 site columns 打上勾。
    这里写图片描述

这样我们就把一个content type和Word模板关联在一起了.
点击Trip Reports->Library Tools->Documents->New Document的Drop-List(下拉菜单)-〉这时我们新建的就是包含这些Content type类型的Word文档,包括Confernce Name /Location/TripType,我们填完之后呢,就把这个文档upload上去。在word 里面填写的值都会自动显示在SharePoint对应的列上。
这里写图片描述

  1. 还有一种方法就是使用vs2010来绑定就是用代码绑定content type的document template
    点击上面的创建的项目TripReport->Add Layouts Mapped folder,然后一个名字叫TripReport的子文件夹也会出现:
    在TripReport里面加入以前建立的模板add existing item
    在ContentType1里面的后面加入

    这里要把Deploy模式设置为Deploy as farm,上面的例子使用sandbox solution是可以正常运行的。

Content type的使用肯定要依赖于List,这里我们要新建一个list definition from content type.这里的content type就是上面建立的content type项目。如下图所示:
这里写图片描述

TripReportListdefination,就是我们建立的List,我们可以看到在TripReportListdefination里面有个Schema.xml,这个文件里面定义了该list所有的视图,我们都知道数据有不同的展现方式,不同的视图展示相同的数据,每针对不同的人,表达不同的意思,提供不一样的角度。
下面,我们来修改默认的试图:
• 修改schema中viewfield的内容。我们要找BaseViewID=1的视图,表示的是默认试图
• 在 中加入如下代码

<FieldRef Name="ConferenceName"/>
<FieldRef Name="ConferenceLocation" />
<FieldRef Name="TripType" />

下面还要修改一个值〈list〉元素的值 EnableContentTypes=”True”;
这样代码的就玩成了,
下面我们就可以和第一个例子一样测试使用了,当然我们还是要首先创建一个我们的list,还有一点要注意:一定要使用IE浏览器,而且电脑上要安装Office2010,使用Chrome浏览器好像是不行的。
这里写图片描述

写的有点乱,懒癌犯了,有时间在整体一下吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值