在SharePoint 2013中创建自定义列表的方式有很多,在网站内容页面添加应用程序就可以创建(站点内容-〉 您的应用程序),也可以通过SharePoint Designer 2013创建,而本文将描述的是用Visual Studio 2012 创建自定义列表的内容,因笔者水平有限,如果各位专家高手发现任何疏漏和错误,望不惜赐教!
首先确认您已经准备好了SharePoint环境,并且安装了Visual Studio的插件(没有插件请参考http://yalla.itgroove.net/2012/08/sharepoint-2013-project-templates-for-visual-studio-2012/)。然后打开Visual Studio-〉新建项目选择Office/SharePoint->SharePoint解决方案->SharePoint 2013-空项目,这里名称、位置可以修改。项目的名字就是发布后生成wsp文件的名字, 所以为项目取个友好的名字吧。
接下来进入自定义向导,如果选择“部署为沙盒解决方案”,执行环境将受到限制而仅能访问某些资源,例如不能在代码中提升权限,在SharePoint映射文件夹里添加内容也会受限。但是有些时候您也许只能这样选择,例如从安全管理考虑(沙盒解决方案不会影响整个服务器场)或者您在部署时只有网站集管理员权限而没有场管理员权限。
下面的项目属性将和部署有关。
选择解决方案资源管理器里的项目右键-〉添加-〉新建项-〉Office/SharePoint->列表,为项目取个温暖的名字。我想做个客户信息的列表就叫MyCustomerList。
接着是选择列表设置,可以选择根据模板创建实例,也可以创建新的模版及实例,我这里都创建新的。修改显示名称会影响列表的标题,但也会影响URL。我现在没有直接改成中文,而是在下面的步骤再修改标题。
新建成功后可看到以下内容:功能文件夹、功能文件、列表模板文件夹、列表模板的Elements.xml文件、列表实例文件夹、列表实例的Elements.xml文件,Schema.xml文件等。
打开功能(Feature)文件,可以修改功能标题和说明,部署后在设置->网站设置->网站操作-〉管理网站功能会看到这个功能。一个项目里可以有多个功能文件,一个功能文件里也可以包含多个元素(范围相同的),给每个功能文件也取一个友好的名字,容易辨识(功能文件的名字不要太长,否则用Visual Studio部署时会报错)。将开发包部署并激活功能后,我们开发自定义列表就能用了。
看一下功能属性,这个和部署步骤后的激活功能有关。
切换到清单选项卡看看功能清单,这里包含上面的功能属性和这个功能里的开发元素(自定义列表模板和自定义列表实例)。
打开列表模版和列表实例都有个元素文件Elements.xml,它们的一些属性就定义在这里。注意,这里的Type或TemplateType值,这个值不能和其他项目的有重复,已经有了就要换一个,否则部署时会报错。
在列表选项卡可以修改标题、URL和说明,这回我将标题改为中文(更改会反应在Elements.xml里)。
切换到栏选项卡,现在看到只有一个标题列。再看下内容类型有两个,其中项目是默认值。如果我们另选择添加一个内容类型并把它设为默认值,会发现上面的列变了,可能有好多列!现在理解下内容类型,网上说“内容类型就是由网站栏集合做成的列表模版”,也就是说我一个客户列表可以做多个客户内容类型——个人客户和企业客户,个人客户可以有姓名、性别,年龄等字段,企业用户可以有法人代表、注册资金等字段。 在SharePoint网站中,设置->网站设置->Web 设计器库->网站内容类型里有很多定义好的内容类型,内容类型也可以自己开发,可以继承。
根据需求,添加修改列(使用网格为列表配置列)。如果不需要,可以把默认的列删掉。
也可以选择已有的栏。在SharePoint网站中,设置->网站设置->Web 设计器库->网站栏里有很多定义好的栏,网站栏也可以自己开发。
我这里自己手工输入几个列,选择“类型”和“是否必填”。
注意这里的属性,DisplayName是显示的列名,ID和Name将来在代码里操作可能会使用,要保证其唯一。Type是可以选择可以详细设置的,系统为我们准备了几个Type,我们也可以开发Type--创建自定义字段类型。
修改完上面的栏,再看下内容类型,发现多了个ListFieldsContentType的内容类型,而且被设为默认值,看来这个内容类型是因为刚才调整了列表的栏后自动创建的。因为在部署后,我在网站内容类型中没找到叫这个名字的内容类型,再新建一个列表修改后新的内容类型也叫这个名称,没有冲突,所以我理解这个内容类型是列表私有的。
切换到视图选项卡,可以添加和修改视图,在这里可以选择可用列,也可以对列排序。
现在,打开Schema.xml文件,可以看到我们设置栏、内容类型、视图还有其他很多的内容都在这里,喜欢XML的高手可以直接修改它,作为新手遇到不会写的定义也可以从做好的Schema.xml内容里借鉴。
View Code
开发已经完成了了,现在用Visual Studio将项目部署,进入网站已经能看到我的客户列表。
再选择Visual Studio发布,生成了一个.wsp的文件-SharePointProject1.wsp(SharePointProject1是项目名),这个文件就可以拿到生产环境部署了。
最后出于好奇,我把wsp文件解压缩,看看里面是什么(如果您的机器上的压缩软件不能直接解压,可尝试修改后缀名为cab。)。我看到的首先是一个清单文件(manifest.xml),一个DLL文件(SharePointProject1.dll),还有一个功能文件夹。打开清单文件看到里面有项目属性的信息,DLL文件和功能文件夹位置等;反编译DLL文件,看到的主要是程序集信息,因为这个项目没写什么C#代码,这里内容非常少。接着再打开功能文件夹,看到的是功能清单文件(Feature.xml),列表模版文件夹(MyCustomerList)、列表实例文件夹(MyCustomerList)。功能清单文件里有功能的属性信息、列表模版和列表实例的元素位置。列表模版和列表实例文件夹里都装着各自的元素文件(Elements.xml),其中列表模板文件夹里还有个Schema.xml文件,我们开发的东西都找到了!
参考资料:
1、《在 SharePoint 2010 中创建自定义列表定义》
http://msdn.microsoft.com/zh-cn/library/ff728096(v=office.14).aspx
2、《创建 SharePoint 的网站栏、内容类型和列表》
http://msdn.microsoft.com/zh-cn/library/vstudio/ee231593(v=vs.110).aspx
3、《创建自定义字段类型》
http://msdn.microsoft.com/zh-cn/library/bb862248(office.14).aspx
微软Web平台安装器下载:
http://www.microsoft.com/web/downloads/platform.aspx